agent-configs:
- etcd-exec: ./bin/etcd
  agent-addr: 127.0.0.1:19027
  failpoint-http-addr: http://127.0.0.1:7381
  base-dir: /tmp/etcd-functional-1
  etcd-client-proxy: false
  etcd-peer-proxy: true
  etcd-client-endpoint: 127.0.0.1:1379
  etcd:
    name: s1
    data-dir: /tmp/etcd-functional-1/etcd.data
    wal-dir: /tmp/etcd-functional-1/etcd.data/member/wal
    heartbeat-interval: 100
    election-timeout: 1000
    listen-client-urls: ["https://127.0.0.1:1379"]
    advertise-client-urls: ["https://127.0.0.1:1379"]
    auto-tls: true
    client-cert-auth: false
    cert-file: ""
    key-file: ""
    trusted-ca-file: ""
    listen-peer-urls: ["https://127.0.0.1:1380"]
    initial-advertise-peer-urls: ["https://127.0.0.1:1381"]
    peer-auto-tls: true
    peer-client-cert-auth: false
    peer-cert-file: ""
    peer-key-file: ""
    peer-trusted-ca-file: ""
    initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381
    initial-cluster-state: new
    initial-cluster-token: tkn
    snapshot-count: 2000
    quota-backend-bytes: 10740000000 # 10 GiB
    pre-vote: true
    initial-corrupt-check: true
    logger: zap
    log-outputs: [/tmp/etcd-functional-1/etcd.log]
    log-level: info
  client-cert-data: ""
  client-cert-path: ""
  client-key-data: ""
  client-key-path: ""
  client-trusted-ca-data: ""
  client-trusted-ca-path: ""
  peer-cert-data: ""
  peer-cert-path: ""
  peer-key-data: ""
  peer-key-path: ""
  peer-trusted-ca-data: ""
  peer-trusted-ca-path: ""
  snapshot-path: /tmp/etcd-functional-1.snapshot.db

- etcd-exec: ./bin/etcd
  agent-addr: 127.0.0.1:29027
  failpoint-http-addr: http://127.0.0.1:7382
  base-dir: /tmp/etcd-functional-2
  etcd-client-proxy: false
  etcd-peer-proxy: true
  etcd-client-endpoint: 127.0.0.1:2379
  etcd:
    name: s2
    data-dir: /tmp/etcd-functional-2/etcd.data
    wal-dir: /tmp/etcd-functional-2/etcd.data/member/wal
    heartbeat-interval: 100
    election-timeout: 1000
    listen-client-urls: ["https://127.0.0.1:2379"]
    advertise-client-urls: ["https://127.0.0.1:2379"]
    auto-tls: true
    client-cert-auth: false
    cert-file: ""
    key-file: ""
    trusted-ca-file: ""
    listen-peer-urls: ["https://127.0.0.1:2380"]
    initial-advertise-peer-urls: ["https://127.0.0.1:2381"]
    peer-auto-tls: true
    peer-client-cert-auth: false
    peer-cert-file: ""
    peer-key-file: ""
    peer-trusted-ca-file: ""
    initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381
    initial-cluster-state: new
    initial-cluster-token: tkn
    snapshot-count: 2000
    quota-backend-bytes: 10740000000 # 10 GiB
    pre-vote: true
    initial-corrupt-check: true
    logger: zap
    log-outputs: [/tmp/etcd-functional-2/etcd.log]
    log-level: info
  client-cert-data: ""
  client-cert-path: ""
  client-key-data: ""
  client-key-path: ""
  client-trusted-ca-data: ""
  client-trusted-ca-path: ""
  peer-cert-data: ""
  peer-cert-path: ""
  peer-key-data: ""
  peer-key-path: ""
  peer-trusted-ca-data: ""
  peer-trusted-ca-path: ""
  snapshot-path: /tmp/etcd-functional-2.snapshot.db

- etcd-exec: ./bin/etcd
  agent-addr: 127.0.0.1:39027
  failpoint-http-addr: http://127.0.0.1:7383
  base-dir: /tmp/etcd-functional-3
  etcd-client-proxy: false
  etcd-peer-proxy: true
  etcd-client-endpoint: 127.0.0.1:3379
  etcd:
    name: s3
    data-dir: /tmp/etcd-functional-3/etcd.data
    wal-dir: /tmp/etcd-functional-3/etcd.data/member/wal
    heartbeat-interval: 100
    election-timeout: 1000
    listen-client-urls: ["https://127.0.0.1:3379"]
    advertise-client-urls: ["https://127.0.0.1:3379"]
    auto-tls: true
    client-cert-auth: false
    cert-file: ""
    key-file: ""
    trusted-ca-file: ""
    listen-peer-urls: ["https://127.0.0.1:3380"]
    initial-advertise-peer-urls: ["https://127.0.0.1:3381"]
    peer-auto-tls: true
    peer-client-cert-auth: false
    peer-cert-file: ""
    peer-key-file: ""
    peer-trusted-ca-file: ""
    initial-cluster: s1=https://127.0.0.1:1381,s2=https://127.0.0.1:2381,s3=https://127.0.0.1:3381
    initial-cluster-state: new
    initial-cluster-token: tkn
    snapshot-count: 2000
    quota-backend-bytes: 10740000000 # 10 GiB
    pre-vote: true
    initial-corrupt-check: true
    logger: zap
    log-outputs: [/tmp/etcd-functional-3/etcd.log]
    log-level: info
  client-cert-data: ""
  client-cert-path: ""
  client-key-data: ""
  client-key-path: ""
  client-trusted-ca-data: ""
  client-trusted-ca-path: ""
  peer-cert-data: ""
  peer-cert-path: ""
  peer-key-data: ""
  peer-key-path: ""
  peer-trusted-ca-data: ""
  peer-trusted-ca-path: ""
  snapshot-path: /tmp/etcd-functional-3.snapshot.db

tester-config:
  data-dir: /tmp/etcd-tester-data
  network: tcp
  addr: 127.0.0.1:9028

  # slow enough to trigger election
  delay-latency-ms: 5000
  delay-latency-ms-rv: 500

  round-limit: 1
  exit-on-failure: true
  enable-pprof: true

  case-delay-ms: 7000
  case-shuffle: true

  # For full descriptions,
  # https://godoc.org/github.com/etcd-io/etcd/functional/rpcpb#Case
  cases:
  - SIGTERM_ONE_FOLLOWER
  - SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT
  - SIGTERM_LEADER
  - SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT
  - SIGTERM_QUORUM
  - SIGTERM_ALL
  - SIGQUIT_AND_REMOVE_ONE_FOLLOWER
  - SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT
  - BLACKHOLE_PEER_PORT_TX_RX_LEADER
  - BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT
  - BLACKHOLE_PEER_PORT_TX_RX_QUORUM
  - BLACKHOLE_PEER_PORT_TX_RX_ALL
  - DELAY_PEER_PORT_TX_RX_LEADER
  - RANDOM_DELAY_PEER_PORT_TX_RX_LEADER
  - DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT
  - RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT
  - DELAY_PEER_PORT_TX_RX_QUORUM
  - RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM
  - DELAY_PEER_PORT_TX_RX_ALL
  - RANDOM_DELAY_PEER_PORT_TX_RX_ALL
  - NO_FAIL_WITH_STRESS
  - NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS

  # TODO: use iptables for discarding outbound rafthttp traffic to peer port
  # - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER
  # - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT
  # - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER
  # - RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER
  # - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT
  # - RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT
  # - SIGQUIT_AND_REMOVE_LEADER
  # - SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT
  # - SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH

  failpoint-commands:
  - panic("etcd-tester")
  # - panic("etcd-tester"),1*sleep(1000)

  runner-exec-path: ./bin/etcd-runner
  external-exec-path: ""

  # make up ±70% of workloads with writes
  stressers:
  - type: KV_WRITE_SMALL
    weight: 0.35
  - type: KV_WRITE_LARGE
    weight: 0.002
  - type: KV_READ_ONE_KEY
    weight: 0.07
  - type: KV_READ_RANGE
    weight: 0.07
  - type: KV_DELETE_ONE_KEY
    weight: 0.07
  - type: KV_DELETE_RANGE
    weight: 0.07
  - type: KV_TXN_WRITE_DELETE
    weight: 0.35
  - type: LEASE
    weight: 0.0

  # - ELECTION_RUNNER
  # - WATCH_RUNNER
  # - LOCK_RACER_RUNNER
  # - LEASE_RUNNER

  checkers:
  - KV_HASH
  - LEASE_EXPIRE

  stress-key-size: 100
  stress-key-size-large: 32769
  stress-key-suffix-range: 250000
  stress-key-suffix-range-txn: 100
  stress-key-txn-ops: 10

  stress-clients: 100
  stress-qps: 2000
