apiVersion: api/v1
kind: Plan
name: endless-oltp-stale-read-and-hot-region-history
#type: ONE_SHOT
schedule: '0 0 * * 2,4,6'
tags: []
variables:
- name: CaseCmdParms
  default: |
    workloadType:
      type : [ 'sysbench_oltp_read_write' ]
      randomWorkloadScope : [ '' ]
    tpccParms:
      storage : s3://benchmark/tpcc-1000-4.0
      db : tpcc
      warehouse : 1000
      threads : 512
      ignoreErrors : '{{meta.parameters.oltp_rel_ignoreErrors}}'
    sysbenchParms:
      storage : s3://benchmark/sysbench-32-10000000
      db : test
      tableNum : 32
      tableSize : 10000000
      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
        artifact:
          monitor: true
          log: true
  items:
  - name: tc
    type: TIDB_CLUSTER
    spec:
      pd:
        replicas: 3
        service:
          type: NodePort
        config: |
          [log]
            #Log level: debug, info, warn, error, fatal.
            level = "info"
          # [replication]
          #   location-labels = [ "zone", "host" ]
          [dashboard]
            internal-proxy = true          
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 8000m
          memory: 16Gi
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        replicas: 4
        storageClassName: "fast-disks"
        requests:
          cpu: 8000m
          memory: 64Gi
          storage: 1500Gi
        limits:
          cpu: 8000m
          memory: 64Gi
          storage: 1500Gi
          # caution: topologySpreadConstraints only supports on k8s provider environment, it may don't work well on dbaas or some others
          # more info refers on: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
          # topologySpreadConstraints:
          #   # means the tikv node is evenly distributed in three zone: zone1, zone2, zone3 in our test
          #   - topologyKey: zone
            # I suggest don't add the hostname topologyKey since the scale of our testing cluster is small
            # - topologyKey: kubernetes.io/hostname            
        baseImage: '{{meta.parameters.tikv_base_image}}'
        version: '{{meta.parameters.tikv_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: br
    type: BR_NODE
    spec:
      image: '{{meta.parameters.br_image}}'
      artifact:
        artifactPaths:
        - /tmp/br.log*
  - name: benchtoolset
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      container:
        name: benchtoolset
        image: '{{meta.parameters.bench_toolset_image}}'
        command:         # 让 toolset 节点不会因为执行完退出
        - tail
        - "-f"
        - "/dev/null"
        resources:
          requests:
            memory: 8Gi             # 申请 64Mi 内存
            cpu: 8000m             # 1 vCPU core
steps:
- name: oltp-stale-read-fun-001
  caseName: oltp_stale_read_fun_001
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
  # - name: oltp-stale-read-rel-001
  #   caseName: oltp_stale_read_rel_001
  #   # caseImage: 'hub.pingcap.net/jianghongmei/endless-oltp:latest'
  #   arguments:
  #     - name: tc
  #       value: "{{testbed.tc}}"
  #     - name: benchtoolset
  #       value: '{{testbed.benchtoolset}}'
  #     - name: br
  #       value: '{{testbed.br}}'
  #     - name: casecmdparms
  #       value: '{{variables.CaseCmdParms}}' 
- name: oltp-stale-read-rel-002
  caseName: oltp_stale_read_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-hot-region-history-rel-001
  caseName: oltp_hot_region_history_rel_001
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
- name: oltp-hot-region-history-rel-002
  caseName: oltp_hot_region_history_rel_002
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
failFast: false
