[ 
https://issues.apache.org/jira/browse/DRILL-5320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15899821#comment-15899821
 ] 

Paul Rogers commented on DRILL-5320:
------------------------------------

Proposed new interface (comments omitted):

{code}
public interface OptionSet {
  OptionValue getOption(String name);
  boolean getOption(TypeValidators.BooleanValidator validator);
  double getOption(TypeValidators.DoubleValidator validator);
  long getOption(TypeValidators.LongValidator validator);
  String getOption(TypeValidators.StringValidator validator);
}
{code}


> Refactor OptionManager to allow better unit testing
> ---------------------------------------------------
>
>                 Key: DRILL-5320
>                 URL: https://issues.apache.org/jira/browse/DRILL-5320
>             Project: Apache Drill
>          Issue Type: Sub-task
>          Components: Tools, Build & Test
>    Affects Versions: 1.10.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>             Fix For: Future
>
>
> The {{OptionManager}} interface serves two purposes:
> * Create and modify options
> * Access option values
> The implementations  of this class are integrated with the rest of Drill, 
> making it difficult to use the classes in isolation in unit testing. Further, 
> since operators are given the full interface, the operator has the ability to 
> modify options, and so each unit test should either verify that no 
> modification is, in fact, done, or must track down modifications and test 
> them.
> For operator and sub-operator unit tests we need a simpler interface. As it 
> turns out, most low-level uses of {{OptionManager}} are all read-only. This 
> allows a simple refactoring to enhance unit testability: create a new 
> super-interface {{OptionSet}}, which provides only the read-only methods.
> Then, refactor low-level classes (code generation, compilers, and so on) to 
> use the restricted {{OptionSet}} interface.
> Finally, for unit tests, create a trivial, map-based implementation that can 
> be populated as needed for each specific test.



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

Reply via email to