|
1 | 1 | # Contributing guidelines
|
2 | 2 |
|
| 3 | +## Reaching out |
| 4 | + |
| 5 | +If you are aiming to implement something to be reviewed and merged it is strongly recommended to |
| 6 | +reach out through [ScyllaDB Users slack](https://scylladb-users.slack.com). You can look at |
| 7 | +[github issues](https://github.com/scylladb/java-driver/issues) to get a rough idea what needs to be implemented. |
| 8 | + |
3 | 9 | ## Code formatting
|
4 | 10 |
|
5 | 11 | ### Java
|
@@ -255,10 +261,12 @@ process, which can be either one of:
|
255 | 261 |
|
256 | 262 | For an example of a Simulacron-based test, see `NodeTargetingIT`.
|
257 | 263 | * [CCM](https://github.com/pcmanus/ccm): launches actual Cassandra nodes locally. The `ccm`
|
258 |
| - executable must be in the path. |
| 264 | + executable must be in the path. [Scylla CCM](https://github.com/scylladb/scylla-ccm) is a drop-in alternative that can also launch Scylla nodes. |
259 | 265 |
|
260 | 266 | You can pass a `-Dccm.version` system property to the build to target a particular Cassandra
|
261 |
| - version (it defaults to 3.11.0). `-Dccm.directory` allows you to point to a local installation |
| 267 | + version (it defaults to 3.11.0). With `-Dccm.scylla=true` Scylla CCM will target a particular Scylla version. |
| 268 | + |
| 269 | + Setting `-Dccm.directory` allows you to point to a local installation |
262 | 270 | -- this can be a checkout of the Cassandra codebase, as long as it's built. See `CcmBridge` in
|
263 | 271 | the driver codebase for more details.
|
264 | 272 |
|
@@ -315,6 +323,24 @@ To isolate an integration test, annotate it with `@Category(IsolatedTests.class)
|
315 | 323 |
|
316 | 324 | For an example, see `HeapCompressionIT`.
|
317 | 325 |
|
| 326 | +##### Disabled tests |
| 327 | +
|
| 328 | +This is a special non-disjoint category. We use several different tags to further categorize failing tests |
| 329 | +that needed disabling and are yet to be fixed: |
| 330 | +- `@IntegrationTestDisabledCassandra3Failure` - general regression when running with Cassandra 3.11 |
| 331 | +- `@IntegrationTestDisabledCassandra4Failure` - general regression when running with Cassandra 4 |
| 332 | +- `@IntegrationTestDisabledPaxExam` - disabling test using PaxExam functionality |
| 333 | +- `@IntegrationTestDisabledScyllaFailure` - general regression when running with Scylla |
| 334 | +- `@IntegrationTestDisabledScyllaJVMArgs` - disabling test, when running with Scylla, that uses Cassandra's JVM arguments |
| 335 | +- `@IntegrationTestDisabledScyllaUDF` - disabling test, when running with Scylla, that uses Cassandra's UDF implementation |
| 336 | +- `@IntegrationTestDisabledScyllaUnsupportedFunctionality` - disabling test, when running with Scylla, that uses functionality unsupported by Scylla (for example SASI indexes or Cassandra's CDC) |
| 337 | +- `@IntegrationTestDisabledScyllaUnsupportedIndex` - disabling test, when running with Scylla, that uses Cassandra's indexes unsupported by Scylla |
| 338 | +- `@IntegrationTestDisabledSSL` - a disabled test that also happens to test SSL functionality |
| 339 | +- `@IntegrationTestDisabledScyllaProtocolV5` - a disabled test that relies on Protocol V5 |
| 340 | +- `@IntegrationTestDisabledScyllaDifferentText` - a disabled test that expects a Cassandra-specific text (such as tracing message) |
| 341 | +- `@IntegrationTestDisabledCCMFailure` - a disabled test that fails at CCM stage (mostly adding new nodes to the cluster) |
| 342 | +
|
| 343 | +
|
318 | 344 | #### About test rules
|
319 | 345 |
|
320 | 346 | Do not mix `CcmRule` and `SimulacronRule` in the same test. It makes things harder to follow, and
|
@@ -377,6 +403,13 @@ for each commit if you enable the pre-commit hook -- see below).
|
377 | 403 | This currently takes about 9 minutes. We don't have a hard limit, but ideally it should stay within
|
378 | 404 | 30 minutes to 1 hour.
|
379 | 405 |
|
| 406 | +As mentioned earlier you can choose a particular cluster version to run them against: |
| 407 | +* `mvn clean verify -Dccm.version=3.11.12 -e` (Cassandra 3.11.12) |
| 408 | +
|
| 409 | +* `mvn clean verify -Dccm.version=4.0.3 -e` (Cassandra 4.0.3) |
| 410 | +
|
| 411 | +* `mvn clean verify -Dccm.version=4.5.3 -Dccm.scylla=true` (Scylla OSS 4.5.3) |
| 412 | +
|
380 | 413 | You can skip test categories individually with `-DskipParallelizableITs`, `-DskipSerialITs` and
|
381 | 414 | `-DskipIsolatedITs` (`-DskipITs` still works to skip them all at once).
|
382 | 415 |
|
|
0 commit comments