Paul Rogers created DRILL-5423:
----------------------------------

             Summary: Refactor ScanBatch to allow unit testing record readers
                 Key: DRILL-5423
                 URL: https://issues.apache.org/jira/browse/DRILL-5423
             Project: Apache Drill
          Issue Type: Improvement
    Affects Versions: 1.9.0
            Reporter: Paul Rogers
            Assignee: Paul Rogers
            Priority: Minor
             Fix For: 1.11.0


A recent set of PRs refactored some of the "context" code to allow easier unit 
testing of operator internals.

A recent attempt to help a community user revealed that it would be helpful to 
refactor parts of {{ScanBatch}} and {{OperatorContext}} to allow unit testing 
of reader code. In particular:

* Make {{ScanBatch.Mutator}} into a static class that can be created in a unit 
test separate from a {{ScanBatch}} (and the rest of Drill.)
* Split {{OperatorContext}} into a execution-only {{OperatorExecContext}} 
interface that can be used in testing. Leave in {{OperatorContext}} the methods 
that require all of Drill to be present.

Doing the above requires a bit of implementation work:

* Change {{OperatorContext}} from an abstract class to an interface so that it 
can extend {OperatorExceContext}}.
* {{OperatorContext}} appears to be a class so that it can hold a static 
method. (Java 8 allows static methods on interfaces, but Drill uses Java 7 
which does not have such support.) Move this method to a new 
{{OperatorUtilities}} class and fix up references.
* Split the {{OperatorContextImpl}} class into two parts. Move into a new 
{{AbstractOperatorContext}} class the code which implements the low-level 
runtime methods. Leave in the original class the functionality that depends on 
the rest of Drill (such as references to the {{DrillbitContext}}.)
* Add a method to the new {{OperatorFixture}} class to create a test-time 
version of the {{OperatorExecContext}} interface.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to