apiVersion: api/v1
kind: Plan
name: endless-oltp-tpcc-large-rel
#type: ONE_SHOT
schedule: '0 0 * * 2,4,6'
tags: []
variables:
- name: CaseCmdParms
  default: |
    workloadType:
      type : [ 'tpcc' ]
    tpccParms:
      storage : s3://benchmark/tpcc10000
      db : tpcc10000
      warehouse : 10000
      threads : 512
      ignoreErrors : '{{meta.parameters.oltp_rel_ignoreErrors}}'
    sysbenchParms:
      storage : s3://benchmark/sysbench_64_7000w
      db : sysbench_64_7000w
      tableNum : 64
      tableSize : 70000000
      threads : 64
      ignoreErrors : '{{meta.parameters.oltp_rel_ignoreErrors}}'
testbed:
  generateName: endless-oltp-
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureNoReserve}}'
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/259e813d-7676-4876-8de2-962df96f4d8e
      onSuccess:
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/259e813d-7676-4876-8de2-962df96f4d8e
  items:
  - name: tc
    type: TIDB_CLUSTER
    spec:
      ngMonitoring:
        # ngmonitoring 从 v5.3.1 才开始支持, 对于老版本的 tidb 集群, 可以通过 create: false 取消部署 ngm
        create: true
        # 可以单独设置 ngMonitoring 的 version, 如未设置, 则会使用 tidb cluster spec.version 的值
        # version: master
        baseImage: hub.pingcap.net/qa/ng-monitoring
      pd:
        replicas: 3
        maxReplicas: 3
        storageClassName: "fast-disks"
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        initContainers:
        - name: "init"
          image: alpine
          command: ["sh", "-c", "echo 603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4 > /var/lib/tikv/master_key"]
          volumeMounts:
            - mountPath: /var/lib/tikv
              name: tikv
        replicas: 4
        maxReplicas: 4
        storageClassName: "fast-disks"
        config: |
          [security]
            [security.encryption]
              data-encryption-method = "aes256-ctr"
              [security.encryption.master-key]
                path = "/var/lib/tikv/master_key"
                type = "file"
        requests:
          cpu: 8000m
          memory: 16Gi
          storage: 1500Gi
        limits:
          cpu: 8000m
          memory: 16Gi
          storage: 1500Gi
        baseImage: '{{meta.parameters.tikv_base_image}}'
        version: '{{meta.parameters.tikv_component_version}}'
      tidb:
        replicas: 2
        maxReplicas: 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: br
    type: BR_NODE
    spec:
      image: '{{meta.parameters.br_image}}'
      artifact:
        artifactPaths:
        - /tmp/br.log*
  - name: benchtoolset
    type: WORKLOAD_NODE
    spec:
      container:
        name: benchtoolset
        image: '{{meta.parameters.bench_toolset_image}}'
        command:
        - tail
        - "-f"
        - "/dev/null"
        resources:
          requests:
            cpu: 8000m
            memory: 16Gi
steps:
- name: oltp-tikv-rel-tikv-down
  caseName: oltp_tikv_rel_tikv_down
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-tikv-rel-tikv-network-loss
  caseName: oltp_tikv_rel_tikv_network_loss
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-tikv-rel-tikv-network-delay
  caseName: oltp_tikv_rel_tikv_network_delay
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
# - name: oltp-tikv-rel-tikv-io-delay
#   caseName: oltp_tikv_rel_tikv_io_delay
#   arguments:
#   - name: tc
#     value: "{{testbed.tc}}"
#   - name: benchtoolset
#     value: '{{testbed.benchtoolset}}'
#   - name: br
#     value: '{{testbed.br}}'
#   - name: casecmdparms
#     value: '{{variables.CaseCmdParms}}'  
- name: oltp-tikv-rel-network-parition-001
  caseName: oltp_tikv_rel_network_parition_001
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-leader-down
  caseName: oltp_pd_rel_leader_down
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-leader-io-delay
  caseName: oltp_pd_rel_leader_io_delay
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-leader-network-loss
  caseName: oltp_pd_rel_leader_network_loss
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-leader-network-latency
  caseName: oltp_pd_rel_leader_network_latency
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-leader-time-offset
  caseName: oltp_pd_rel_leader_time_offset
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-pd-rel-restart-all-pod
  caseName: oltp_pd_rel_restart_all_pod
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}' 
- name: oltp-pd-rel-transfer-leader
  caseName: oltp_pd_rel_transfer_leader
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'       
- name: oltp-gc-rel-gc-leader-down
  caseName: oltp_gc_rel_gc_leader_down
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-gc-rel-tikv-down
  caseName: oltp_gc_rel_tikv_down
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-gc-rel-tidb-tikv-network-delay
  caseName: oltp_gc_rel_tidb_tikv_network_delay
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-gc-rel-gc-leader-network-loss
  caseName: oltp_gc_rel_gc_leader_network_loss
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-gc-rel-tikv-network-partition
  caseName: oltp_gc_rel_tikv_network_partition
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-evict-leader-rel-002
  caseName: oltp_evict_leader_rel_002
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'  
- name: oltp-evict-leader-rel-003
  caseName: oltp_evict_leader_rel_003
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'    
failFast: false
