You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by if...@apache.org on 2021/07/15 07:27:47 UTC

[cassandra-harry] 03/04: Adjust config files

This is an automated email from the ASF dual-hosted git repository.

ifesdjeen pushed a commit to branch CASSANDRA-16262-2
in repository https://gitbox.apache.org/repos/asf/cassandra-harry.git

commit 32a9200e706883e8e248c81f95174fa34226e90c
Author: Alex Petrov <ol...@gmail.com>
AuthorDate: Tue Jul 13 10:41:18 2021 +0200

    Adjust config files
---
 README.md                           |  3 --
 conf/{example.yaml => default.yaml} | 63 ++++++++++++++++++++++++-------------
 conf/external.yaml                  | 51 +++++++++++++++++++++---------
 docker/Dockerfile.local             |  2 +-
 docker/run.sh                       |  2 +-
 pom.xml                             | 24 ++++++--------
 run-jvm.sh                          |  2 +-
 7 files changed, 90 insertions(+), 57 deletions(-)

diff --git a/README.md b/README.md
index ec93b22..841e4ea 100644
--- a/README.md
+++ b/README.md
@@ -491,10 +491,8 @@ Harry is by no means feature-complete. Main things that are missing are:
 
   * Some types (such as collections) are not deflatable
   * Some types are implemented, but are not hooked up (`blob` and `text`) to DSL/generator
-  * Partition deletions are not implemented
   * 2i queries are not implemented
   * Compact storage is not implemented
-  * Static columns are not implemented
   * Fault injection is not implemented
   * Runner and scheduler are rather rudimentary and require significant rework and proper scheduling
   * TTL is not supported
@@ -508,7 +506,6 @@ Some things, even though are implemented, can be improved or optimized:
   * Inflated partition state and per-row operation log should be done in a compact
   off-heap data structure
   * Exhaustive checker can be significantly optimized
-  * Harry shouldn't rely on java-driver for query generation
   * Exhaustive checker should use more precise information from data tracker, not
   just watermarks
   * Decision-making about _when_ we visit partitions and/or rows should be improved
diff --git a/conf/example.yaml b/conf/default.yaml
similarity index 76%
rename from conf/example.yaml
rename to conf/default.yaml
index 3a3c5ab..cdbc34c 100644
--- a/conf/example.yaml
+++ b/conf/default.yaml
@@ -35,14 +35,6 @@ clock:
     epoch_length: 1
     epoch_time_unit: "SECONDS"
 
-# Runner is a is a component that schedules operations that change the cluster (system under test)
-# and model state.
-runner:
-  concurrent:
-    writer_threads: 2
-    round_robin_validator_threads: 1
-    recent_partition_validator_threads: 1
-
 run_time: 2
 run_time_unit: "HOURS"
 
@@ -54,12 +46,6 @@ system_under_test:
     worker_threads: 10
     root: "/tmp/harry/"
 
-# Model is responsible for tracking logical timestamps that
-model:
-  exhaustive_checker:
-    max_seen_lts: 19
-    max_complete_lts: 16
-
 # Partition descriptor selector controls how partitions is selected based on the current logical
 # timestamp. Default implementation is a sliding window of partition descriptors that will visit
 # one partition after the other in the window `slide_after_repeats` times. After that will
@@ -77,18 +63,53 @@ clustering_descriptor_selector:
   default:
     modifications_per_lts:
       type: "constant"
-      constant: 10
+      constant: 4
     rows_per_modification:
       type: "constant"
-      constant: 10
+      constant: 2
     operation_kind_weights:
-      WRITE: 97
       DELETE_RANGE: 1
+      DELETE_SLICE: 1
       DELETE_ROW: 1
       DELETE_COLUMN: 1
+      DELETE_PARTITION: 1
+      DELETE_COLUMN_WITH_STATICS: 1
+      INSERT_WITH_STATICS: 50
+      INSERT: 50
+      UPDATE_WITH_STATICS: 50
+      UPDATE: 50
     column_mask_bitsets: null
-    max_partition_size: 100
+    max_partition_size: 1000
+
+# Runner is a is a component that schedules operations that change the cluster (system under test)
+# and model state.
+runner:
+  sequential:
+    partition_visitors:
+      - logging:
+          row_visitor:
+            mutating: {}
+      - sampler:
+          trigger_after: 1000
+          sample_partitions: 10
+      - parallel_validate_recent_partitions:
+          partition_count: 100
+          queries_per_partition: 2
+          concurrency: 20
+          trigger_after: 10000
+          model:
+            quiescent_checker: {}
+      - validate_all_partitions:
+          concurrency: 20
+          trigger_after: 100000
+          model:
+            quiescent_checker: {}
+
+# Model is responsible for tracking logical timestamps that
+data_tracker:
+  default:
+    max_seen_lts: -1
+    max_complete_lts: -1
 
-# Default Row Visitor
-row_visitor:
-  default: {}
\ No newline at end of file
+metric_reporter:
+  no_op: {}
\ No newline at end of file
diff --git a/conf/external.yaml b/conf/external.yaml
index 770dda9..52943b8 100644
--- a/conf/external.yaml
+++ b/conf/external.yaml
@@ -35,14 +35,6 @@ clock:
     epoch_length: 1
     epoch_time_unit: "SECONDS"
 
-# Runner is a is a component that schedules operations that change the cluster (system under test)
-# and model state.
-runner:
-  concurrent:
-    writer_threads: 2
-    round_robin_validator_threads: 1
-    recent_partition_validator_threads: 1
-
 run_time: 2
 run_time_unit: "HOURS"
 
@@ -78,18 +70,47 @@ clustering_descriptor_selector:
   default:
     modifications_per_lts:
       type: "constant"
-      constant: 10
+      constant: 4
     rows_per_modification:
       type: "constant"
-      constant: 10
+      constant: 2
     operation_kind_weights:
-      WRITE: 97
       DELETE_RANGE: 1
+      DELETE_SLICE: 1
       DELETE_ROW: 1
       DELETE_COLUMN: 1
+      DELETE_PARTITION: 1
+      DELETE_COLUMN_WITH_STATICS: 1
+      INSERT_WITH_STATICS: 50
+      INSERT: 50
+      UPDATE_WITH_STATICS: 50
+      UPDATE: 50
     column_mask_bitsets: null
-    max_partition_size: 100
+    max_partition_size: 1000
+
+# Runner is a is a component that schedules operations that change the cluster (system under test)
+# and model state.
+runner:
+  sequential:
+    partition_visitors:
+      - logging:
+          row_visitor:
+            mutating: {}
+      - sampler:
+          trigger_after: 1000
+          sample_partitions: 10
+      - parallel_validate_recent_partitions:
+          partition_count: 100
+          queries_per_partition: 2
+          concurrency: 20
+          trigger_after: 10000
+          model:
+            quiescent_checker: {}
+      - validate_all_partitions:
+          concurrency: 20
+          trigger_after: 100000
+          model:
+            quiescent_checker: {}
 
-# Default Row Visitor
-row_visitor:
-  default: {}
\ No newline at end of file
+metric_reporter:
+  no_op: {}
\ No newline at end of file
diff --git a/docker/Dockerfile.local b/docker/Dockerfile.local
index 21ce8fc..4b0032f 100644
--- a/docker/Dockerfile.local
+++ b/docker/Dockerfile.local
@@ -28,7 +28,7 @@ COPY ./harry-core/target/*.jar /opt/harry/lib/
 COPY ./harry-integration/target/lib/ /opt/harry/lib/
 COPY ./harry-integration/target/*.jar /opt/harry/
 COPY ./test/conf/logback-dtest.xml /opt/harry/test/conf/logback-dtest.xml
-COPY ./conf/example.yaml /opt/harry/example.yaml
+COPY ./conf/default.yaml /opt/harry/default.yaml
 COPY ./docker/run.sh /opt/harry/
 
 WORKDIR /opt/harry
diff --git a/docker/run.sh b/docker/run.sh
index 490b21f..48afa0b 100755
--- a/docker/run.sh
+++ b/docker/run.sh
@@ -75,7 +75,7 @@ while true; do
        -cp /opt/harry/lib/*:/opt/harry/harry-integration-0.0.1-SNAPSHOT.jar \
        -Dharry.root=${HARRY_DIR} \
        harry.runner.HarryRunnerJvm \
-       /opt/harry/example.yaml
+       /opt/harry/default.yaml
 
    if [ $? -ne 0 ]; then
       if [ -e "failure.dump" ]; then
diff --git a/pom.xml b/pom.xml
index 7e23efd..276a670 100755
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
     <properties>
         <javac.target>1.8</javac.target>
         <harry.version>0.0.1-SNAPSHOT</harry.version>
-        <cassandra.version>4.0.0-SNAPSHOT</cassandra.version>
+        <cassandra.version>4.1-58515c2de6</cassandra.version>
         <jackson.version>2.11.3</jackson.version>
         <dtest.version>0.0.7</dtest.version>
         <jmh.version>1.11.3</jmh.version>
@@ -135,28 +135,22 @@
             </dependency>
 
             <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>27.0-jre</version>
-            </dependency>
-
-            <dependency>
                 <groupId>org.apache.cassandra</groupId>
                 <artifactId>cassandra-dtest-shaded</artifactId>
                 <version>${cassandra.version}</version>
             </dependency>
 
             <dependency>
-                <groupId>com.datastax.cassandra</groupId>
-                <artifactId>cassandra-driver-core</artifactId>
-                <version>3.6.0</version>
+                <groupId>org.reflections</groupId>
+                <artifactId>reflections</artifactId>
+                <version>0.9.12</version>
             </dependency>
 
-            <dependency>
-                <groupId>org.apache.commons</groupId>
-                <artifactId>commons-lang3</artifactId>
-                <version>3.1</version>
-            </dependency>
+	    <dependency>
+	      <groupId>com.datastax.cassandra</groupId>
+              <artifactId>cassandra-driver-core</artifactId>
+              <version>3.6.0</version>
+	    </dependency>
 
             <dependency>
                 <groupId>org.apache.commons</groupId>
diff --git a/run-jvm.sh b/run-jvm.sh
index 6c330f8..e0999b5 100755
--- a/run-jvm.sh
+++ b/run-jvm.sh
@@ -46,4 +46,4 @@ java -ea \
        -Dorg.apache.cassandra.test.logback.configurationFile=file://test/conf/logback-dtest.xml \
        -cp harry-integration/target/harry-integration-0.0.1-SNAPSHOT.jar:$(find harry-integration/target/dependency/*.jar | tr -s '\n' ':'). \
        harry.runner.HarryRunnerJvm \
-       conf/example.yaml
\ No newline at end of file
+       conf/default.yaml

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