apiVersion: api/v1
kind: Plan
name: rawkv-ccb-app-router-api-v2-gc-test
#type: ONE_SHOT
schedule: "@daily"
tags: ["rawkv"]
testbed:
  generateName: rawkv-app-router-online-api-v2
  # resourcePool: scenario
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '1h'
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/d7749c41-5a70-4eea-ba29-238b34391d01
  items:
    - name: tc
      type: TIDB_CLUSTER
      spec:
          pd:
              replicas: 3
              baseImage: hub-new.pingcap.net/qa/pd
              version: v6.1.0-pre
              storageClassName: "fast-disks"
              config: |
                  election-interval = "1s"
                  lease = 1
                  tick-interval = "200ms"

                  [pd-server]
                  dashboard-address = "none"
                  trace-region-flow = false

                  [replication]
                  location-labels = ["zone", "host"]
                  max-replicas = 5

              requests:
                  cpu: 4000m
                  memory: 8Gi
                  # storage: 100Gi
              limits:
                  cpu: 4000m
                  memory: 8Gi
                  # storage: 100Gi
              # topologySpreadConstraints:
              #     -   topologyKey: zone
          tikv:
              replicas: 6
              baseImage: hub-new.pingcap.net/qa/tikv
              version: v6.1.0-pre
              storageClassName: "fast-disks"
              config: |
                  [pd]
                  enable-forwarding = true

                  [raftdb]
                  max-background-jobs = 4
                  max-sub-compactions = 2
                  use-direct-io-for-flush-and-compaction = true
                  [raftdb.defaultcf]
                  compression-per-level = ["lz4", "lz4", "lz4", "lz4", "lz4", "lz4", "lz4"]
                  hard-pending-compaction-bytes-limit = "4096GB"
                  level0-slowdown-writes-trigger = 32
                  level0-stop-writes-trigger = 1024
                  max-write-buffer-number = 1024
                  soft-pending-compaction-bytes-limit = "4096GB"
                  write-buffer-size = "256MB"

                  [raftstore]
                  apply-pool-size = 6
                  hibernate-regions = false
                  pd-heartbeat-tick-interval = "5s"
                  raft-base-tick-interval = "200ms"
                  raft-election-timeout-ticks = 5
                  raft-heartbeat-ticks = 1
                  raft-max-inflight-msgs = 2048
                  raft-store-max-leader-lease = "800ms"
                  store-pool-size = 4

                  [readpool]
                  [readpool.storage]
                  use-unified-pool = true
                  [readpool.unified]
                  max-thread-count = 7

                  [rocksdb]
                  max-background-jobs = 16
                  max-sub-compactions = 4
                  rate-bytes-per-sec = "500MB"
                  use-direct-io-for-flush-and-compaction = true
                  [rocksdb.defaultcf]
                  block-size = "8KB"
                  compression-per-level = ["lz4", "lz4", "lz4", "lz4", "lz4", "lz4", "lz4"]
                  hard-pending-compaction-bytes-limit = "4096GB"
                  level0-slowdown-writes-trigger = 32
                  level0-stop-writes-trigger = 1024
                  max-bytes-for-level-base = "1GB"
                  max-write-buffer-number = 16
                  soft-pending-compaction-bytes-limit = "4096GB"
                  write-buffer-size = "1024MB"

                  [server]
                  grpc-raft-conn-num = 3

                  [storage]
                  enable-ttl = true
                  api-version = 2
                  ttl-check-poll-interval = "24h"
              requests:
                  cpu: 8000m
                  memory: 32Gi
                  storage: 100Gi
              limits:
                  cpu: 8000m
                  memory: 32Gi
                  storage: 100Gi
              # topologySpreadConstraints:
              #       # in test-infra env there are only 3 zones: zone1, zone2 and zone3
              #       -   topologyKey: zone
          tidb:
              replicas: 2
              baseImage: hub-new.pingcap.net/qa/tidb
              version: v6.1.0-pre
              # storageClassName: "fast-disks"
              requests:
                  cpu: 4000m
                  memory: 8Gi
                  # storage: 100Gi
              limits:
                  cpu: 4000m
                  memory: 8Gi
                  # storage: 100Gi
    - name: workload0
      type: WORKLOAD_NODE
      spec:
        replicas: 6
        artifact:
            artifactPaths:
                - /usr/src/ccbload/log/
        container:
          name: workload
          image: hub-new.pingcap.net/qa/rawkvworkload:api-v2
          labels:
            workload-app: ccbload
          command:
            - tail
            - "-f"
            - "/dev/null"
          resources:
            requests:
              memory: 16Gi
              cpu: 8000m
    - name: tiup
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
        artifact:
          artifactPaths:
            - /usr/src/automate/
        container:
          name: node
          image: hub.pingcap.net/qa/rawkvtiup:latest
          imagePullPolicy: Always
          resources:
            requests:
              memory: 16Gi
              cpu: 4000m
          securityContext:
            capabilities:
              add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
    - name: clientmonitor
      type: WORKLOAD_NODE
      spec:
        artifact:
            artifactPaths:
                - /prometheus
        container:
          name: workload
          image: prom/prometheus:v2.8.1
          resources:
            requests:
              memory: 32Gi
              cpu: 4000m
steps:
- name: ccb-scenario-002
  caseName: RawKV_AppRouter_Scene_002
  caseImage: hub.pingcap.net/endless/endless:pr-669
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: workload0
    value: "{{testbed.workload0}}"
  - name: tiup
    value: "{{testbed.tiup}}"
  - name: clientmonitor
    value: "{{testbed.clientmonitor}}"