mirror of
https://github.com/apache/impala.git
synced 2025-12-23 21:08:39 -05:00
IMPALA-11697: Enable SkipIf.not_hdfs tests for Ozone
Convert SkipIf.not_hdfs to SkipIf.not_dfs for tests that require
filesystem semantics, adding more feature test coverage with Ozone.
Creates a separate not_scratch_fs flag for scratch dir tests as they're
not supported with Ozone yet. Filed IMPALA-11730 to address this.
Preserves not_hdfs for a specific test that uses the dfsadmin CLI to put
it in safemode.
Adds sfs_ofs_unsupported for SmallFileSystem tests. This should work for
many of our filesystems based on
ebb1e2fa99/ql/src/java/org/apache/hadoop/hive/ql/io/SingleFileSystem.java (L62-L87). Makes sfs tests work on S3.
Adds hardcoded_uris for IcebergV2 tests where deletes are implemented as
hardcoded URIs in parquet files. Adding a parquet read/write library for
Python is beyond the scope if this patch.
Change-Id: Iafc1dac52d013e74a459fdc4336c26891a256ef1
Reviewed-on: http://gerrit.cloudera.org:8080/19254
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Reviewed-by: Joe McDonnell <joemcdonnell@cloudera.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
# We do not hardcode the host name to something like "localhost" since the host name may
|
||||
# be an IP address in a test environment.
|
||||
CREATE EXTERNAL TABLE test_tbl_01 (s STRING, i INT) STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d1.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d1.parq/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -11,7 +11,7 @@ LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs
|
||||
CREATE EXTERNAL TABLE test_tbl_02 (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d2.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d2.txt/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -48,22 +48,22 @@ INSERT INTO TABLE test_tbl_02 VALUES ('x', 100);
|
||||
row_regex: .*Unable to INSERT into target table .+ because .+ is not a supported filesystem.*
|
||||
====
|
||||
---- QUERY
|
||||
LOAD DATA INPATH 'hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d3.parq' INTO TABLE test_tbl_01
|
||||
LOAD DATA INPATH '$NAMENODE/test-warehouse/$DATABASE.db/sfs_d3.parq' INTO TABLE test_tbl_01
|
||||
---- CATCH
|
||||
Unsupported SFS filesystem operation!
|
||||
====
|
||||
---- QUERY
|
||||
LOAD DATA INPATH 'hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d4.txt' INTO TABLE test_tbl_02
|
||||
LOAD DATA INPATH '$NAMENODE/test-warehouse/$DATABASE.db/sfs_d4.txt' INTO TABLE test_tbl_02
|
||||
---- CATCH
|
||||
Unsupported SFS filesystem operation!
|
||||
====
|
||||
---- QUERY
|
||||
LOAD DATA INPATH 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#' INTO TABLE test_tbl_01
|
||||
LOAD DATA INPATH 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#' INTO TABLE test_tbl_01
|
||||
---- CATCH
|
||||
row_regex: .*INPATH location .+ must point to one of the supported filesystem URI scheme.*
|
||||
====
|
||||
---- QUERY
|
||||
LOAD DATA INPATH 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#' INTO TABLE test_tbl_02
|
||||
LOAD DATA INPATH 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#' INTO TABLE test_tbl_02
|
||||
---- CATCH
|
||||
row_regex: .*INPATH location .+ must point to one of the supported filesystem URI scheme.*
|
||||
====
|
||||
@@ -89,7 +89,7 @@ COMPUTE STATS $DATABASE.test_tbl_02
|
||||
====
|
||||
---- QUERY
|
||||
CREATE EXTERNAL TABLE test_tbl_03_ext (s STRING, i INT) STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -97,7 +97,7 @@ LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABAS
|
||||
CREATE EXTERNAL TABLE test_tbl_04_ext (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -163,7 +163,7 @@ DROP TABLE test_tbl_04_ext;
|
||||
# The table can actually be created.
|
||||
CREATE TABLE test_tbl_03 (s STRING, i INT)
|
||||
STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -172,7 +172,7 @@ LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABAS
|
||||
CREATE TABLE test_tbl_04 (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -242,7 +242,7 @@ DROP TABLE test_tbl_04
|
||||
# test_tbl_05 can be created, which shows that sfs_d3.parq has not been deleted after
|
||||
# test_tbl_03 was dropped.
|
||||
CREATE TABLE test_tbl_05 (s STRING, i INT) STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -252,7 +252,7 @@ LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABAS
|
||||
CREATE TABLE test_tbl_06 (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -286,7 +286,7 @@ STRING, INT
|
||||
SET DEFAULT_TRANSACTIONAL_TYPE=INSERT_ONLY;
|
||||
CREATE TABLE test_tbl_03 (s STRING, i INT)
|
||||
STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
---- CATCH
|
||||
A managed table's location should be located within managed warehouse root directory or within its database's managedLocationUri.
|
||||
====
|
||||
@@ -297,7 +297,7 @@ SET DEFAULT_TRANSACTIONAL_TYPE=INSERT_ONLY;
|
||||
CREATE TABLE test_tbl_04 (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
---- CATCH
|
||||
A managed table's location should be located within managed warehouse root directory or within its database's managedLocationUri.
|
||||
====
|
||||
@@ -305,23 +305,25 @@ A managed table's location should be located within managed warehouse root direc
|
||||
SET DEFAULT_TRANSACTIONAL_TYPE=INSERT_ONLY;
|
||||
CREATE TABLE test_tbl_03 (s STRING, i INT)
|
||||
STORED AS PARQUET
|
||||
LOCATION 'hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d3.parq'
|
||||
---- CATCH
|
||||
LOCATION '$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d3.parq'
|
||||
---- CATCH: ANY_OF
|
||||
Path is not a directory
|
||||
Path is a file
|
||||
====
|
||||
---- QUERY
|
||||
SET DEFAULT_TRANSACTIONAL_TYPE=INSERT_ONLY;
|
||||
CREATE TABLE test_tbl_04 (s STRING, i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/managed/$DATABASE.db/sfs_d4.txt'
|
||||
---- CATCH
|
||||
LOCATION '$NAMENODE/test-warehouse/managed/$DATABASE.db/sfs_d4.txt'
|
||||
---- CATCH: ANY_OF
|
||||
Path is not a directory
|
||||
Path is a file
|
||||
====
|
||||
---- QUERY
|
||||
# The table can actually be created but the contents of the table cannot be retrieved.
|
||||
CREATE EXTERNAL TABLE test_tbl_03 (s STRING) PARTITIONED BY (i INT) STORED AS PARQUET
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d3.parq/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
@@ -330,7 +332,7 @@ LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs
|
||||
CREATE EXTERNAL TABLE test_tbl_04 (s STRING) PARTITIONED BY (i INT)
|
||||
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
|
||||
STORED AS TEXTFILE
|
||||
LOCATION 'sfs+hdfs://$INTERNAL_LISTEN_HOST:20500/test-warehouse/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
LOCATION 'sfs+$NAMENODE/test-warehouse/$DATABASE.db/sfs_d4.txt/#SINGLEFILE#'
|
||||
---- RESULTS
|
||||
'Table has been created.'
|
||||
====
|
||||
|
||||
@@ -98,7 +98,15 @@ class SkipIf:
|
||||
skip_hbase = pytest.mark.skipif(pytest.config.option.skip_hbase,
|
||||
reason="--skip_hbase argument specified")
|
||||
not_s3 = pytest.mark.skipif(not IS_S3, reason="S3 Filesystem needed")
|
||||
not_hdfs = pytest.mark.skipif(not IS_HDFS, reason="HDFS Filesystem needed")
|
||||
not_hdfs = pytest.mark.skipif(not IS_HDFS, reason="HDFS admin needed")
|
||||
not_dfs = pytest.mark.skipif(not (IS_HDFS or IS_OZONE),
|
||||
reason="HDFS/Ozone Filesystem needed")
|
||||
not_scratch_fs = pytest.mark.skipif(not IS_HDFS,
|
||||
reason="Scratch dirs for temporary file spilling not supported")
|
||||
sfs_unsupported = pytest.mark.skipif(not (IS_HDFS or IS_S3 or IS_ABFS or IS_ADLS
|
||||
or IS_GCS), reason="Hive support for sfs+ is limited, HIVE-26757")
|
||||
hardcoded_uris = pytest.mark.skipif(not IS_HDFS,
|
||||
reason="Iceberg delete files hardcode the full URI in parquet files")
|
||||
not_ec = pytest.mark.skipif(not IS_EC, reason="Erasure Coding needed")
|
||||
no_secondary_fs = pytest.mark.skipif(not SECONDARY_FILESYSTEM,
|
||||
reason="Secondary filesystem needed")
|
||||
|
||||
@@ -19,7 +19,7 @@ import pytest
|
||||
|
||||
from tests.common.custom_cluster_test_suite import CustomClusterTestSuite
|
||||
from tests.common.parametrize import UniqueDatabase
|
||||
from tests.common.skip import SkipIf
|
||||
from tests.common.skip import SkipIfFS
|
||||
|
||||
|
||||
class TestDisableFeatures(CustomClusterTestSuite):
|
||||
@@ -29,7 +29,7 @@ class TestDisableFeatures(CustomClusterTestSuite):
|
||||
def get_workload(self):
|
||||
return 'functional-query'
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIfFS.hdfs_caching
|
||||
@pytest.mark.execute_serially
|
||||
@UniqueDatabase.parametrize(sync_ddl=True)
|
||||
@CustomClusterTestSuite.with_args(
|
||||
|
||||
@@ -19,7 +19,8 @@ import pytest
|
||||
from tests.common.custom_cluster_test_suite import CustomClusterTestSuite
|
||||
from tests.common.skip import SkipIf
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
|
||||
@SkipIf.not_dfs
|
||||
class TestHedgedReads(CustomClusterTestSuite):
|
||||
""" Exercises the hedged reads code path.
|
||||
NOTE: We unfortunately cannot force hedged reads on a minicluster, but we enable
|
||||
|
||||
@@ -277,7 +277,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
client.close()
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_remote_spill(self, vector):
|
||||
# Test one remote directory with one its local buffer directory.
|
||||
normal_dirs = self.generate_dirs(1)
|
||||
@@ -305,7 +305,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
client.close()
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_mix_local_and_remote_dir_spill_local_only(self, vector):
|
||||
'''Two local directories, the first one is always used as local buffer for
|
||||
remote directories. Set the second directory big enough so that only spills
|
||||
@@ -338,7 +338,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
client.close()
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_mix_local_and_remote_dir_spill_both(self, vector):
|
||||
'''Two local directories, the first one is always used as local buffer for
|
||||
remote directories. Set the second directory small enough so that it spills
|
||||
@@ -372,7 +372,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
client.close()
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_remote_spill_with_options(self, vector):
|
||||
# One local buffer directory and one remote directory.
|
||||
normal_dirs = self.generate_dirs(1)
|
||||
@@ -402,7 +402,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
client.close()
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_remote_spill_concurrent(self, vector):
|
||||
'''Concurrently execute multiple queries that trigger the spilling to the remote
|
||||
directory to test if there is a deadlock issue.'''
|
||||
@@ -449,7 +449,7 @@ class TestScratchDir(CustomClusterTestSuite):
|
||||
assert (total_size > 0 and total_size % (8 * 1024 * 1024) == 0)
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_scratch_fs
|
||||
def test_scratch_dirs_batch_reading(self, vector):
|
||||
# Set the buffer directory small enough to spill to the remote one.
|
||||
normal_dirs = self.generate_dirs(1)
|
||||
|
||||
@@ -26,6 +26,8 @@ from tests.beeswax.impala_beeswax import ImpalaBeeswaxException
|
||||
from tests.common.impala_test_suite import ImpalaTestSuite
|
||||
from tests.common.skip import SkipIf, SkipIfFS
|
||||
from tests.common.test_dimensions import create_exec_option_dimension
|
||||
from tests.util.filesystem_utils import get_fs_path
|
||||
|
||||
|
||||
class TestDataErrors(ImpalaTestSuite):
|
||||
# batch_size of 1 can expose some interesting corner cases at row batch boundaries.
|
||||
@@ -42,12 +44,13 @@ class TestDataErrors(ImpalaTestSuite):
|
||||
def get_workload(self):
|
||||
return 'functional-query'
|
||||
|
||||
|
||||
# Regression test for IMP-633. Added as a part of IMPALA-5198.
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
class TestHdfsFileOpenFailErrors(ImpalaTestSuite):
|
||||
@pytest.mark.execute_serially
|
||||
def test_hdfs_file_open_fail(self):
|
||||
absolute_location = "/test-warehouse/file_open_fail"
|
||||
absolute_location = get_fs_path("/test-warehouse/file_open_fail")
|
||||
create_stmt = \
|
||||
"create table file_open_fail (x int) location '" + absolute_location + "'"
|
||||
insert_stmt = "insert into file_open_fail values(1)"
|
||||
@@ -64,6 +67,7 @@ class TestHdfsFileOpenFailErrors(ImpalaTestSuite):
|
||||
assert "Failed to open HDFS file" in str(e)
|
||||
self.client.execute(drop_stmt)
|
||||
|
||||
|
||||
# Test for IMPALA-5331 to verify that the libHDFS API hdfsGetLastExceptionRootCause()
|
||||
# works.
|
||||
@SkipIf.not_hdfs
|
||||
@@ -161,6 +165,7 @@ class TestAvroErrors(TestDataErrors):
|
||||
vector.get_value('exec_option')['abort_on_error'] = 0
|
||||
self.run_test_case('DataErrorsTest/avro-errors', vector)
|
||||
|
||||
|
||||
class TestHBaseDataErrors(TestDataErrors):
|
||||
@classmethod
|
||||
def add_test_dimensions(cls):
|
||||
|
||||
@@ -455,7 +455,7 @@ class TestDdlStatements(TestDdlBase):
|
||||
self.run_test_case('QueryTest/alter-table', vector, use_db=unique_database,
|
||||
multiple_impalad=self._use_multiple_impalad(vector))
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIfFS.hdfs_caching
|
||||
@SkipIfLocal.hdfs_client
|
||||
@UniqueDatabase.parametrize(sync_ddl=True, num_dbs=2)
|
||||
def test_alter_table_hdfs_caching(self, vector, unique_database):
|
||||
|
||||
@@ -304,7 +304,7 @@ class TestAcid(ImpalaTestSuite):
|
||||
assert len(self.execute_query("select * from {}".format(tbl_name)).data) == 0
|
||||
|
||||
@SkipIfHive2.acid
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
def test_full_acid_schema_without_file_metadata_tag(self, vector, unique_database):
|
||||
"""IMPALA-10115: Some files have full ACID schema without having
|
||||
'hive.acid.version' set. We still need to identify such files as full ACID"""
|
||||
@@ -315,7 +315,7 @@ class TestAcid(ImpalaTestSuite):
|
||||
table_uri = self._get_table_location(fq_table_name, vector)
|
||||
acid_file = (os.environ['IMPALA_HOME'] +
|
||||
"/testdata/data/full_acid_schema_but_no_acid_version.orc")
|
||||
self.hdfs_client.copy_from_local(acid_file, table_uri + "/bucket_00000")
|
||||
self.filesystem_client.copy_from_local(acid_file, table_uri + "/bucket_00000")
|
||||
self.execute_query("refresh {}".format(fq_table_name))
|
||||
result = self.execute_query("select count(*) from {0}".format(fq_table_name))
|
||||
assert "3" in result.data
|
||||
|
||||
@@ -126,17 +126,17 @@ class TestIcebergTable(IcebergTestSuite):
|
||||
# trigger a known bug: IMPALA-11509. Hence, turning this test off until there is a fix
|
||||
# for this issue. Note, we could add a sleep righ after table creation that could
|
||||
# workaround the above mentioned bug but then we would hit another issue: IMPALA-11502.
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
def test_drop_incomplete_table(self, vector, unique_database):
|
||||
"""Test DROP TABLE when the underlying directory is deleted. In that case table
|
||||
loading fails, but we should be still able to drop the table from Impala."""
|
||||
pytest.skip()
|
||||
pytest.skip("Gets into a metadata update loop")
|
||||
tbl_name = unique_database + ".synchronized_iceberg_tbl"
|
||||
cat_location = "/test-warehouse/" + unique_database
|
||||
cat_location = get_fs_path("/test-warehouse/" + unique_database)
|
||||
self.client.execute("""create table {0} (i int) stored as iceberg
|
||||
tblproperties('iceberg.catalog'='hadoop.catalog',
|
||||
'iceberg.catalog_location'='{1}')""".format(tbl_name, cat_location))
|
||||
self.hdfs_client.delete_file_dir(cat_location, True)
|
||||
self.filesystem_client.delete_file_dir(cat_location, True)
|
||||
self.execute_query_expect_success(self.client, """drop table {0}""".format(tbl_name))
|
||||
|
||||
def test_insert(self, vector, unique_database):
|
||||
@@ -455,7 +455,7 @@ class TestIcebergTable(IcebergTestSuite):
|
||||
except Exception as e:
|
||||
assert "Cannot find a snapshot older than" in str(e)
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
def test_strings_utf8(self, vector, unique_database):
|
||||
# Create table
|
||||
table_name = "ice_str_utf8"
|
||||
@@ -542,7 +542,7 @@ class TestIcebergTable(IcebergTestSuite):
|
||||
os.remove(local_path)
|
||||
return datafiles
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
def test_writing_metrics_to_metadata(self, vector, unique_database):
|
||||
# Create table
|
||||
table_name = "ice_stats"
|
||||
@@ -872,17 +872,17 @@ class TestIcebergV2Table(IcebergTestSuite):
|
||||
# the data files via full URI, i.e. they start with 'hdfs://localhost:2050/...'. In the
|
||||
# dockerised environment the namenode is accessible on a different hostname/port.
|
||||
@SkipIfDockerizedCluster.internal_hostname
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.hardcoded_uris
|
||||
def test_read_position_deletes(self, vector):
|
||||
self.run_test_case('QueryTest/iceberg-v2-read-position-deletes', vector)
|
||||
|
||||
@SkipIfDockerizedCluster.internal_hostname
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.hardcoded_uris
|
||||
def test_read_position_deletes_orc(self, vector):
|
||||
self.run_test_case('QueryTest/iceberg-v2-read-position-deletes-orc', vector)
|
||||
|
||||
@SkipIfDockerizedCluster.internal_hostname
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.hardcoded_uris
|
||||
def test_table_sampling_v2(self, vector):
|
||||
self.run_test_case('QueryTest/iceberg-tablesample-v2', vector,
|
||||
use_db="functional_parquet")
|
||||
|
||||
@@ -21,8 +21,10 @@
|
||||
from tests.common.file_utils import copy_files_to_hdfs_dir
|
||||
from tests.common.impala_test_suite import ImpalaTestSuite
|
||||
from tests.common.skip import SkipIf
|
||||
from tests.util.filesystem_utils import WAREHOUSE
|
||||
|
||||
|
||||
@SkipIf.sfs_unsupported
|
||||
class TestSFS(ImpalaTestSuite):
|
||||
@classmethod
|
||||
def get_workload(cls):
|
||||
@@ -37,14 +39,13 @@ class TestSFS(ImpalaTestSuite):
|
||||
cls.ImpalaTestMatrix.add_constraint(lambda v:
|
||||
v.get_value('exec_option')['disable_codegen'] is False)
|
||||
|
||||
@SkipIf.not_hdfs
|
||||
def test_sfs(self, vector, unique_database):
|
||||
files_for_external_tables = ["testdata/data/sfs_d1.parq", "testdata/data/sfs_d2.txt",
|
||||
"testdata/data/sfs_d3.parq", "testdata/data/sfs_d4.txt"]
|
||||
files_for_managed_tables = ["testdata/data/sfs_d3.parq", "testdata/data/sfs_d4.txt"]
|
||||
hdfs_dir_for_external_tables = "/test-warehouse/{0}.db/".format(unique_database)
|
||||
hdfs_dir_for_external_tables = "{0}/{1}.db/".format(WAREHOUSE, unique_database)
|
||||
hdfs_dir_for_managed_tables =\
|
||||
"/test-warehouse/managed/{0}.db/".format(unique_database)
|
||||
"{0}/managed/{1}.db/".format(WAREHOUSE, unique_database)
|
||||
|
||||
copy_files_to_hdfs_dir(files_for_external_tables, hdfs_dir_for_external_tables)
|
||||
copy_files_to_hdfs_dir(files_for_managed_tables, hdfs_dir_for_managed_tables)
|
||||
|
||||
@@ -190,7 +190,7 @@ class TestAcidInsertsBasic(TestAcidStress):
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@pytest.mark.stress
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
@UniqueDatabase.parametrize(sync_ddl=True)
|
||||
def test_partitioned_inserts(self, unique_database):
|
||||
"""Check that the different ACID write operations take appropriate locks.
|
||||
|
||||
@@ -25,6 +25,7 @@ from tests.common.impala_test_suite import ImpalaTestSuite
|
||||
from tests.common.parametrize import UniqueDatabase
|
||||
from tests.common.skip import SkipIf
|
||||
from tests.stress.stress_util import run_tasks, Task
|
||||
from tests.util.filesystem_utils import WAREHOUSE
|
||||
|
||||
|
||||
# Stress test for concurrent INSERT operations.
|
||||
@@ -103,7 +104,7 @@ class TestInsertStress(ImpalaTestSuite):
|
||||
|
||||
@pytest.mark.execute_serially
|
||||
@pytest.mark.stress
|
||||
@SkipIf.not_hdfs
|
||||
@SkipIf.not_dfs
|
||||
@UniqueDatabase.parametrize(sync_ddl=True)
|
||||
def test_iceberg_inserts(self, unique_database):
|
||||
"""Issues INSERT statements against multiple impalads in a way that some
|
||||
@@ -114,7 +115,7 @@ class TestInsertStress(ImpalaTestSuite):
|
||||
self.client.execute("""create table {0} (wid int, i int) stored as iceberg
|
||||
tblproperties('iceberg.catalog'='hadoop.catalog',
|
||||
'iceberg.catalog_location'='{1}')""".format(
|
||||
tbl_name, '/test-warehouse/' + unique_database))
|
||||
tbl_name, "{0}/{1}".format(WAREHOUSE, unique_database)))
|
||||
|
||||
counter = Value('i', 0)
|
||||
num_writers = 4
|
||||
|
||||
Reference in New Issue
Block a user