[
https://issues.apache.org/jira/browse/DRILL-5423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15962032#comment-15962032
]
ASF GitHub Bot commented on DRILL-5423:
---------------------------------------
GitHub user paul-rogers opened a pull request:
https://github.com/apache/drill/pull/811
DRILL-5423: Refactor ScanBatch to allow unit testing record readers
Refactors ScanBatch to allow unit testing of record reader
implementations, especially the “writer” classes.
See JIRA for details.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/paul-rogers/drill DRILL-5423
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/drill/pull/811.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #811
----
commit d8b25c287492f821dce6da6aeb2124be7678e351
Author: Paul Rogers <[email protected]>
Date: 2017-04-09T03:52:04Z
DRILL-5423: Refactor ScanBatch to allow unit testing record readers
Refactors ScanBatch to allow unit testing of record reader
implementations, especially the “writer” classes.
See JIRA for details.
----
> 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)