apiVersion: api/v1
kind: Plan
name: endless-htap-zto
#type: ONE_SHOT
schedule: "@daily"
tags: []
testbed:
  generateName: endless-htap-zto-
  reclaimPolicy:
    lease: 32h
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureNoReserve}}'
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/573d5985-7c9e-4a4d-8e9f-a0e0b4bda9e2
      onSuccess:
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/ea22c6ca-afc8-4b8b-a196-025e5b96fccf
        artifact:
          monitor: true
          log: true
  items:
  - name: tc
    type: TIDB_CLUSTER
    spec:
      timezone: Asia/Shanghai
      pd:
        replicas: 3
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
        service:
          type: NodePort
        config: |
          [dashboard]
          internal-proxy = true
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        replicas: 4
        storageClassName: "fast-disks"
        requests:
          cpu: 16000m
          memory: 48Gi
        limits:
          cpu: 16000m
          memory: 48Gi
        baseImage: '{{meta.parameters.tikv_base_image}}'
        version: '{{meta.parameters.tikv_component_version}}'
      tiflash:
        maxReplicas: 6
        replicas: 4
        storageClaims:
        - resources:
            requests:
              storage: 500Gi
          storageClassName: "fast-disks"
        requests:
          cpu: 16000m
          memory: 48Gi
        limits:
          cpu: 16000m
          memory: 48Gi
        config:
          config: |
            ## 数据块元信息的内存 cache 大小限制，通常不需要修改
            mark_cache_size = 5368709120
            ## 数据块 min-max 索引的内存 cache 大小限制，通常不需要修改
            minmax_index_cache_size = 5368709120
            [logger]
            level = "debug"
            size = "1000M"
            count = 100
            [profiles.default]
            ## 存储引擎的 segment 分裂是否使用逻辑分裂。使用逻辑分裂可以减小写放大，提高写入速度，但是会造成一定程度的硬盘空间回收不及时。默认为 true
            ## 单次 coprocessor 查询过程中，对中间数据的内存限制，单位为 byte，默认为 0，表示不限制
            max_memory_usage = 0
            ## 所有查询过程中，对中间数据的内存限制，单位为 byte，默认为 0，表示不限制
            max_memory_usage_for_all_queries = 0
#                          dt_segment_force_merge_delta_rows = 10000000000
#                          dt_segment_stop_write_delta_rows = 10000000000
          proxy: |
            log-file = "/data0/logs/tiflash_tikv.log"
        baseImage: '{{meta.parameters.tiflash_base_image}}'
        version: '{{meta.parameters.tiflash_component_version}}'
      tidb:
        replicas: 2
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
        baseImage: '{{meta.parameters.tidb_base_image}}'
        version: '{{meta.parameters.tidb_component_version}}'
      version: '{{meta.parameters.base_image_version}}'
  - name: olapworkload1
    type: WORKLOAD_NODE
    spec:
      container:
        name: zto1
        image: hub.pingcap.net/lilinghai/zto:latest
        command:
        - tail
        - "-f"
        - "/dev/null"
  - name: olapworkload2
    type: WORKLOAD_NODE
    spec:
      container:
        name: zto2
        image: hub.pingcap.net/lilinghai/zto:latest
        command:
        - tail
        - "-f"
        - "/dev/null"
  - name: olapworkload3
    type: WORKLOAD_NODE
    spec:
      container:
        name: zto3
        image: hub.pingcap.net/lilinghai/zto:latest
        command:
        - tail
        - "-f"
        - "/dev/null"
  - name: olapworkload4
    type: WORKLOAD_NODE
    spec:
      container:
        name: zto4
        image: hub.pingcap.net/lilinghai/zto:latest
        command:
        - tail
        - "-f"
        - "/dev/null"
steps:
- name: zto-stable-run
  caseName: htap_zto_001
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: olapworkload1
    value: '{{testbed.olapworkload1}}'
  - name: olapworkload2
    value: '{{testbed.olapworkload2}}'
  - name: olapworkload3
    value: '{{testbed.olapworkload3}}'
  - name: olapworkload4
    value: '{{testbed.olapworkload4}}'
  - name: workload
    value: zto
#- name: zto-profile-stable-run
#  caseName: htap_zto_006
#  arguments:
#  - name: tc
#    value: "{{testbed.tc}}"
#  - name: olapworkload1
#    value: '{{testbed.olapworkload1}}'
#  - name: olapworkload2
#    value: '{{testbed.olapworkload2}}'
#  - name: olapworkload3
#    value: '{{testbed.olapworkload3}}'
#  - name: olapworkload4
#    value: '{{testbed.olapworkload4}}'
#  - name: workload
#    value: zto
- name: zto-ddl
  caseName: htap_zto_ddl
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: olapworkload1
    value: '{{testbed.olapworkload1}}'
  - name: olapworkload2
    value: '{{testbed.olapworkload2}}'
  - name: olapworkload3
    value: '{{testbed.olapworkload3}}'
  - name: olapworkload4
    value: '{{testbed.olapworkload4}}'
  - name: workload
    value: zto
- name: zto-scale-out-in
  caseName: htap_zto_002
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: olapworkload1
    value: '{{testbed.olapworkload1}}'
  - name: olapworkload2
    value: '{{testbed.olapworkload2}}'
  - name: olapworkload3
    value: '{{testbed.olapworkload3}}'
  - name: olapworkload4
    value: '{{testbed.olapworkload4}}'
  - name: workload
    value: zto
- name: zto-chaos
  caseName: htap_zto_003
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: olapworkload1
    value: '{{testbed.olapworkload1}}'
  - name: olapworkload2
    value: '{{testbed.olapworkload2}}'
  - name: olapworkload3
    value: '{{testbed.olapworkload3}}'
  - name: olapworkload4
    value: '{{testbed.olapworkload4}}'
  - name: workload
    value: zto
#- name: zto-gc
#  caseName: htap_zto_005
#  arguments:
#    - name: tc
#      value: "{{testbed.tc}}"
#    - name: olapworkload1
#      value: '{{testbed.olapworkload1}}'
#    - name: olapworkload2
#      value: '{{testbed.olapworkload2}}'
#    - name: olapworkload3
#      value: '{{testbed.olapworkload3}}'
#    - name: olapworkload4
#      value: '{{testbed.olapworkload4}}'
#    - name: workload
#      value: zto
failFast: true