cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Petrov (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-14821) Make it possible to run multi-node coordinator/replica tests in a single JVM
Date Wed, 14 Nov 2018 09:09:01 GMT

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

Alex Petrov updated CASSANDRA-14821:
------------------------------------
    Description: 
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/b371e72d-9dc8-455d-acb3-45cd8be1386b]|

  was:
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]|


> 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/b371e72d-9dc8-455d-acb3-45cd8be1386b]|



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message