Files
impala/tests/custom_cluster/test_alloc_fail.py
Michael Ho 40f75fb1ba IMPALA-2925: Fix flaky tests in test_alloc_fail_update()
test_alloc_fail_update() aims to stress memory allocation
failure in the Update(), Serialize() and/or Finalize() functions
of UDAs. However, this test included some UDFs which allocated
memory in their Init() functions and not during their Update()
functions. This change removes those UDFs from the test.

Change-Id: I1ecc7e838e34ebc9ea3c878fee8ea2497b5fa23e
Reviewed-on: http://gerrit.cloudera.org:8080/2005
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Reviewed-by: Dan Hecht <dhecht@cloudera.com>
Tested-by: Internal Jenkins
2016-02-10 00:54:11 +00:00

42 lines
1.7 KiB
Python

# Copyright (c) 2015 Cloudera, Inc. All rights reserved.
#
# 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.
import logging
import pytest
from copy import deepcopy
from tests.common.custom_cluster_test_suite import CustomClusterTestSuite
from tests.common.skip import SkipIfNotDebugBuild
@SkipIfNotDebugBuild.debug_only
class TestAllocFail(CustomClusterTestSuite):
"""Tests for handling malloc() failure for UDF/UDA"""
@classmethod
def get_workload(self):
return 'functional-query'
@pytest.mark.execute_serially
@CustomClusterTestSuite.with_args("--stress_free_pool_alloc=1")
def test_alloc_fail_init(self, vector):
self.run_test_case('QueryTest/alloc-fail-init', vector)
@pytest.mark.execute_serially
@CustomClusterTestSuite.with_args("--stress_free_pool_alloc=3")
def test_alloc_fail_update(self, vector):
# Note that this test relies on pre-aggregation to exercise the Serialize() path so
# query option 'num_nodes' must not be 1. CustomClusterTestSuite.add_test_dimensions()
# already filters out vectors with 'num_nodes' != 0 so just assert it here.
assert vector.get_value('exec_option')['num_nodes'] == 0
self.run_test_case('QueryTest/alloc-fail-update', vector)