[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-3948?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Norbert Kalmár resolved ZOOKEEPER-3948.
---------------------------------------
    Resolution: Fixed

> Introduce a deterministic runtime behavior injection framework for 
> ZooKeeperServer testing
> ------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-3948
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3948
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: server, tests
>            Reporter: Michael Han
>            Assignee: Michael Han
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.7.0
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> We'd like to understand how applications built on top of ZooKeeper behave 
> under various faulty conditions, which is important to build resilient end to 
> end solutions and avoid ZooKeeper being single point of failure. We'd also 
> like to achieve this in both unit tests (in process) and integration tests 
> (in and out of process). Traditional methods of using external fault 
> injection mechanisms are non deterministic and requires non trivial set up 
> and hard to integrate with unit tests, so here we introduce the 
> ZooKeeperController service which solves both.
> The basic idea here is to create a controllable ZooKeeperServer which accepts 
> various control commands (such as - delay request, drop request, eat request, 
> expire session, shutdown, trigger leader election, and so on), and reacting 
> based on incoming commands. The controllable server and production server 
> share the same underlying machineries (quorum peers, ZooKeeper server, etc) 
> but code paths are separate, thus this feature has no production impact.
> This controller system is currently composed of following pieces:
> * CommandClient: a convenient HTTP client to send control commands to 
> controller service.
> * CommandListener: an embed HTTP server listening incoming commands and 
> dispatch to controller service.
> * Controller Service: the service that's responsible to create controllable 
> ZK server and the controller.
> * ZooKeeperServerController: the controller that changes the behavior of ZK 
> server runtime.
> * Controllable Cnx / Factory: controllable connection that accept behavior 
> change requests.
> In future more control commands and controllable components can be added on 
> top of this framework.
> This can be used in either unit tests / integration tests as an in process 
> embedded controllable ZooKeeper server, or as an out of process stand alone 
> controllable ZooKeeper process.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to