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

Benedict commented on CASSANDRA-14821:
--------------------------------------

Do you have a branch with your prior round of improvement changes split out, 
just to corroborate them (this branch has them squashed)?

Couple of minor suggestions on the branch as stands:

* Maybe worth extracting an {{assertThrows}} method accepting a lambda (with 
optional predicate) for the tests?
* Maybe worth moving this into its own top level test/integration folder, or 
test/distributed?  Not sure; at present these are easily called unit tests, but 
we anticipate non-unit tests, which might be strange to depend on the unit test 
tree.  It also might anyway be nice to separate out our distributed tests?


> Make it possible to run multi-node coordinator/replica tests in a single JVM
> ----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-14821
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14821
>             Project: Cassandra
>          Issue Type: Test
>            Reporter: Alex Petrov
>            Assignee: Alex Petrov
>            Priority: Major
>
> This patch proposes an in-JVM Distributed Tester that can help to write 
> distributed tests in a single JVM and be able to control node behaviour in a 
> fine-grained way and set up nodes exactly how one needs it: configuration 
> settings, parameters, which are also controllable in runtime on a per node 
> basis, so each node can have its own unique state.
> It fires up multiple Cassandra Instances in a single JVM. It is done through 
> having distinct class loaders in order to work around the singleton problem 
> in Cassandra. In order to be able to pass some information between the nodes, 
> a common class loader is used that loads up java standard library and several 
> helper classes. Tests look a lot like CQLTester tests would usually look like.
> Each Cassandra Instance, with its distinct class loader is using 
> serialisation and class loading mechanisms in order to run instance-local 
> queries and execute node state manipulation code, hooks, callbacks etc.
> First version mocks out Messaging Service and simplifies schema management by 
> simply running schema change commands on each of the instances separately. 
> Internode communication is mocked by passing ByteBuffers through shared class 
> loader.
> |[patch|https://github.com/ifesdjeen/cassandra/tree/14821]|[tests|https://circleci.com/workflow-run/3d999976-0b8e-40d6-83e0-867129747cc2]|



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to