You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alex Petrov (Jira)" <ji...@apache.org> on 2022/01/10 13:39:00 UTC

[jira] [Commented] (CASSANDRA-16262) 4.0 Quality: Coordination & Replication Fuzz Testing

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

Alex Petrov commented on CASSANDRA-16262:
-----------------------------------------

[patch|https://github.com/apache/cassandra/pull/1382]

This introduces several ways to test Cassandra with Harry. 

1. Creating unit tests using the history builder

{code}
test(new SchemaGenerators.Builder("harry")
                         .partitionKeySpec(1, 5)
                         .clusteringKeySpec(1, 5)
                         .regularColumnSpec(1, 10)
                         .generator(),
     historyBuilder -> {
         historyBuilder.nextPartition()
                       .simultaneously()
                       .randomOrder()
                         .partitionDeletion()
                         .rangeDeletion()
                       .finish();
     });
{code}

2. Generating SSTables

{code}
        SSTableLoadingVisitor sstableVisitor = new SSTableLoadingVisitor(run, 1000);
         LtsVisitor visitor = new GeneratingVisitor(run, sstableVisitor);
         Set<Long> pds = new HashSet<>();
         run.tracker.onLtsStarted((lts) -> {
             pds.add(run.pdSelector.pd(lts, run.schemaSpec));
         });
         for (int i = 0; i < 1000; i++)
             visitor.visit();

         sstableVisitor.forceFlush(0);
{code}

3. "normal" Harry capabilities (i.e. generate data using visitors and validate them using the model).




> 4.0 Quality: Coordination & Replication Fuzz Testing
> ----------------------------------------------------
>
>                 Key: CASSANDRA-16262
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16262
>             Project: Cassandra
>          Issue Type: Task
>          Components: Test/fuzz
>            Reporter: Caleb Rackliffe
>            Assignee: Alex Petrov
>            Priority: Normal
>              Labels: pull-request-available
>             Fix For: 4.x
>
>
> CASSANDRA-16180, CASSANDRA-16181, and CASSANDRA-15977 have largely focused on auditing the existing tests around coordination, replication, and read-repair, respectively. We've expanded existing test cases, added coverage around components that we've refactored along the way, and added in-JVM dtest upgrade tests where possible.
> What remains is verifying the distributed read and write paths in the face of common operational events, namely node restarts, bootstrapping, decommission, and cleanup. If we can find a way to simulate these events, [Harry|https://github.com/apache/cassandra-harry] seems like a good candidate to host the verification logic itself.
> To keep things simple initially, I would propose that we start by testing simple read-only and write-only workloads (the former without read repair).



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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