Paul Rogers created IMPALA-7807:
-----------------------------------
Summary: Analysis test fixture to enable deeper testing
Key: IMPALA-7807
URL: https://issues.apache.org/jira/browse/IMPALA-7807
Project: IMPALA
Issue Type: Improvement
Components: Frontend
Affects Versions: Impala 3.0
Reporter: Paul Rogers
Assignee: Paul Rogers
The Impala front-end provides a number of JUnit tests such as
{{ExprRewriteRulesTest}}. These tests verify rewrites by providing layers of
functions that build up a query, analyze the query, run rewrite rules, and test
one part of the result.
The tests are fine as far as they go, but they do not cover all cases. For
example, they tests rewrites in the {{SELECT}} clause, but not {{ORDER BY}} or
{{GROUP BY}}. (Testing of those uncovered previously hidden bugs.) In some
cases, we want to test rewrite rules in detail, but the existing tests only
support a wholesale rewrite.
Since the existing tests are function based, it is hard to inject new behavior
somewhere in the process, for example, to test the {{WHERE}} clause rather than
{{SELECT}} To do that, we need to copy the {{SELECT}} functions, and make
changes to test {{WHERE}}.
Since copying of code is generally an undesirable approach, a better approach
is to use a "test fixture": a class that performs the required steps, maintains
intermediate state for inspection, and acts as the foundation for various kinds
of tests (such as the various clauses mentioned above.)
In practice, all that is required is moving some code from functions on the
test class to be methods on a fixture class, which also holds onto state that
would otherwise be lost in function calls.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]