Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-5423

Refactor ScanBatch to allow unit testing record readers

Attach filesAttach ScreenshotVotersStop watchingWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.9.0
    • 1.11.0
    • None

    Description

      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.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            paul-rogers Paul Rogers
            paul-rogers Paul Rogers
            Gautam Parai Gautam Parai
            Votes:
            0 Vote for this issue
            Watchers:
            3 Stop watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment