Patrick Hunt commented on ZOOKEEPER-544:

discoverability. I put testable* to make it easier for clients to do test 
(rather than figure out how to get this).

Also, exposing cnxn means it's harder to make changes to the implementation as 
the user code
will be closely coupled to the guts of cnxn. this allows for changes under the 
covers (for common
use cases at least)

> improve client testability - allow test client to access connected server 
> location
> ----------------------------------------------------------------------------------
>                 Key: ZOOKEEPER-544
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-544
>             Project: Zookeeper
>          Issue Type: Improvement
>          Components: c client, java client, tests
>            Reporter: Patrick Hunt
>            Assignee: Patrick Hunt
>             Fix For: 3.3.0
>         Attachments: ZOOKEEPER-544.patch
> This came up recently on the user list. If you are developing tests for your 
> zk client you need to be able to access the server that your
> session is currently connected to. The reason is that your test needs to know 
> which server in the quorum to shutdown in order to
> verify you are handling failover correctly. Similar for session expiration 
> testing.
> however we should be careful, we prefer not to expose this to all clients, 
> this is an implementation detail that we typically
> want to hide. 
> also we should provide this in both the c and java clients
> I suspect we should add a protected method on ZooKeeper. This will make a 
> higher bar (user will have to subclass) for 
> the user to access this method. In tests it's fine, typically you want a 
> "TestableZooKeeper" class anyway. In c we unfortunately
> have less options, we can just rely on docs for now. 
> In both cases (c/java) we need to be very very clear in the docs that this is 
> for testing only and to clearly define semantics.
> We should add the following at the same time:
> toString() method to ZooKeeper which includes server ip/port, client port, 
> any other information deemed useful (connection stats like send/recv?)
> the java ZooKeeper is missing "deterministic connection order" that the c 
> client has. this is also useful for testing. again, protected and 
> clear docs that this is for testing purposes only!
> Any other things we should expose?

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to