accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Havanki (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-2497) InstanceFactory
Date Thu, 20 Mar 2014 14:46:45 GMT


Bill Havanki commented on ACCUMULO-2497:

I hadn't considered whether classes were actually used when making factories for them. Nevertheless,
a search through 1.6.0-SNAPSHOT shows me lots of {{ZooKeeperInstance}} constructor calls outside
of test code, including in {{ClientOpts}}, {{ConfiguratorBase}}, {{RangeInputSplit}}, {{Shell}},
{{MiniAccumuloClusterImpl}}, and {{ProxyServer}}.

The {{HdfsZooInstance.getInstance()}} call is not easily mocked, because a static method cannot
be overridden. Powermock can do all sorts of shenanigans to work around it, but it's better
to avoid that.

> InstanceFactory
> ---------------
>                 Key: ACCUMULO-2497
>                 URL:
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: client
>            Reporter: Bill Havanki
>            Assignee: Bill Havanki
>            Priority: Minor
>              Labels: factory, static, testability
>             Fix For: 1.6.1, 1.7.0
> Working on ACCUMULO-2470 (unit tests for server/base) is made difficult by the heavy
dependence on static method calls in our architecture. This ticket is for introducing an {{InstanceFactory}}
interface that will greatly ease testing of code that currently retrieves instances via static
methods (e.g., {{HdfsZooInstance.getInstance()}}).
> Limitations:
> * Work here should be limited to creating {{InstanceFactory}} and its implementations,
and not integrating it into existing code (yet).
> * Work is limited to 1.6 and later. To avoid perturbing the 1.6.0 release no new code
may be introduced into the public API ({{Instance}} is in the public API).
> * A refactoring of the client API is being considered (see ACCUMULO-2128), so this change
should not further complicate - and should hopefully help - that future effort.

This message was sent by Atlassian JIRA

View raw message