#   Licensed to the Apache Software Foundation (ASF) under one
#   or more contributor license agreements.  See the NOTICE file
#   distributed with this work for additional information
#   regarding copyright ownership.  The ASF licenses this file
#   to you under the Apache License, Version 2.0 (the
#   "License"); you may not use this file except in compliance
#   with the License.  You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

seed: 1596731732524

# Default schema provider generates random schema
schema_provider:
  default: {}

drop_schema: false
create_schema: true
truncate_table: false

# Clock is a component responsible for mapping _logical_ timestamps to _real-time_ ones.
#
# When reproducing test failures, and for validation purposes, a snapshot of such clock can
# be taken to map a real-time timestamp from the value retrieved from the database in order
# to map it back to the logical timestamp of the operation that wrote this value.
clock:
  approximate_monotonic:
    history_size: 7300
    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"

# System under test: a Cassandra node or cluster. Default implementation is in_jvm (in-jvm DTest cluster).
# Harry also supports external clusters.
system_under_test:
  external:
    contact_points: 127.0.0.1
    port: 9042
    username: null
    password: null

# 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
# retire one partition descriptor, and pick one instead of it.
partition_descriptor_selector:
  default:
    window_size: 10
    slide_after_repeats: 100

# Clustering descriptor selector controls how clusterings are picked within the partition:
# how many rows there can be in a partition, how many rows will be visited for a logical timestamp,
# how many operations there will be in batch, what kind of operations there will and how often
# each kind of operation is going to occur.
clustering_descriptor_selector:
  default:
    modifications_per_lts:
      type: "constant"
      constant: 10
    rows_per_modification:
      type: "constant"
      constant: 10
    operation_kind_weights:
      WRITE: 97
      DELETE_RANGE: 1
      DELETE_ROW: 1
      DELETE_COLUMN: 1
    column_mask_bitsets: null
    max_partition_size: 100

# Default Row Visitor
row_visitor:
  default: {}