IMPALA-13959: (addendum) Let test pass regardless of JDK version.

This patch modify test_change_parquet_column_type to let it pass
regardless of the test JDK version. The assertion is changed from using
string match to regex.

Testing:
Run and pass the test with both JDK8 and JDK17.

Change-Id: I5bd3eebe7b1e52712033dda488f0c19882207f9d
Reviewed-on: http://gerrit.cloudera.org:8080/22874
Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
Riza Suminto
2025-05-09 07:46:27 -07:00
committed by Impala Public Jenkins
parent be16a02fa8
commit a3146ca722

View File

@@ -25,9 +25,9 @@
from __future__ import absolute_import, division, print_function
from builtins import range
import os
import pytest
import random
import re
import string
from tests.common.environ import HIVE_MAJOR_VERSION
@@ -282,7 +282,7 @@ class TestHmsIntegration(ImpalaTestSuite):
return ''.join([random.choice(string.ascii_lowercase)
for i in range(0, 16)])
def assert_sql_error(self, engine, command, *strs_in_error):
def assert_sql_error(self, engine, command, str_re_in_error):
"""
Passes 'command' to 'engine' callable (e.g. execute method of a BeeswaxConnection
object) and makes sure that it raises an exception.
@@ -296,11 +296,12 @@ class TestHmsIntegration(ImpalaTestSuite):
try:
engine(command)
except Exception as e:
for str_in_error in strs_in_error:
assert str_in_error in str(e)
str_e = str(e)
assert re.search(str_re_in_error, str_e), "{} not found in {}".format(
str_re_in_error, str_e)
else:
assert False, '%s should have triggered an error containing %s' % (
command, strs_in_error)
command, str_re_in_error)
@pytest.mark.execute_serially
def test_hive_db_hive_table_add_partition(self):
@@ -784,14 +785,12 @@ class TestHmsIntegration(ImpalaTestSuite):
# Modify HMS table metadata again, change the type of column 'y' back to INT.
self.run_stmt_in_hive('alter table %s change y y int' % table_name)
# Neither Hive 2 and 3, nor Impala converts STRINGs to INTs implicitly.
err_msg = ("{0}org.apache.hadoop.io.Text cannot be "
"cast to {0}org.apache.hadoop.io.IntWritable")
# The error message is different in newer Javas than in 17
# TODO: find out which version changed it exactly
err_msg = err_msg.format(
"class " if int(os.environ.get('IMPALA_JDK_VERSION_NUM')) >= 17 else "")
err_msgs = (r".*org.apache.hadoop.io.Text cannot be cast to "
r".*org.apache.hadoop.io.IntWritable")
self.assert_sql_error(
self.run_stmt_in_hive, 'select * from %s' % table_name, err_msg)
self.run_stmt_in_hive, 'select * from %s' % table_name, err_msgs)
self.client.execute('invalidate metadata %s' % table_name)
self.assert_sql_error(
self.client.execute, 'select * from %s' % table_name,