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]

Reply via email to