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

Enrico Olivelli commented on BOOKKEEPER-896:
--------------------------------------------

I used a LocalAddress with maps to the same address registered on ZK for the 
Bookie, this way the client checks if the Bookie to connect to is "local" and 
in that case bypass the network connection.

This setup allows a group of JVM to embed the Bookie service but each JVM is 
able to use Bookie from other machines.

You can also launch many bookies on the same JVM, in the test case I launched 4 
bookies.

Maybe for unit testing and for single "JVM" installations it would be useful an 
option to disable the "real" network socket on the Bookie



> VM-local transport
> ------------------
>
>                 Key: BOOKKEEPER-896
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-896
>             Project: Bookkeeper
>          Issue Type: New Feature
>          Components: bookkeeper-client, bookkeeper-server
>    Affects Versions: 4.4.0
>            Reporter: Enrico Olivelli
>            Priority: Minor
>
> Hi,
> I’m wondering if it is feasible to have a way to launch a Bookie and a 
> Bookkeeper client in the same JVM without using network, valid use cases are:
> 1) Unit testing 
> 2) Installations using a single Bookie 
> 1) Unit testing
> For unit testing  I’m using mock classes which reproduce the functions of 
> Bookkeeper but it makes my code more complex. 
> Running network-related libraries limits the possibility of running tests in 
> parallel and slows down the overall throughput of the tests
> 2) Single Bookie deployment
> Sometimes I need to launch software which uses Bookkeeper in a single-machine 
> deployment, in this case using an embedded Bookie will let to have only a 
> single JVM process which runs the full stack of the service.
> For instance when I’m using Bookkeeper as a commit log I need to implement a 
> commit log which uses Bookkeeper for replicated deployments, a simple “file” 
> based commit log  and a pure in-memory commit log for unit testing.
> I think it could be done using Netty LocalServerChannelFactory (and related 
> client-side classes) and some tricks about the use of hostnames, registration 
> on Zookeeper and so on
> Of course the same issue will be on Zookkeeper 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to