apiVersion: api/v1
kind: Plan
name: endless-diskfull-stability-fun
#type: ONE_SHOT
schedule: '0 0 * * 1,5'
tags: []
variables:
- name: CaseCmdParms
  default: |
    workloadType:
      type : [ 'tpcc' ]
    tpccParms:
      storage : s3://benchmark/tpcc10000
      db : tpcc10000
      warehouse : 10000
      threads : 512
      ignoreErrors : '{{meta.parameters.oltp_fun_ignoreErrors}}'
    sysbenchParms:
      storage : s3://benchmark/sysbench_64_7000w
      db : sysbench_64_7000w
      tableNum : 64
      tableSize : 70000000
      threads : 512
      ignoreErrors : '{{meta.parameters.oltp_fun_ignoreErrors}}'
    skipRunWorkload: true 
    runTime:
      totalRunTime: 24h        
testbed:
  generateName: endless-oltp-
  reclaimPolicy:
    lease: 48h
    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:
      timezone: UTC
      pd:
          replicas: 2
          baseImage: '{{meta.parameters.pd_base_image}}'
          storageClassName: "fast-disks"
          service:
              type: NodePort
          # more refer to: https://github.com/tikv/pd/blob/master/conf/config.toml
          # config is string type and toml format, I prefer uses https://www.convertsimple.com/convert-yaml-to-toml/ to transfer yaml to toml
          config: |
              [dashboard]
                internal-proxy = true  
          requests:
              cpu: 4000m
              memory: 8Gi
          limits:
              cpu: 4000m
              memory: 8Gi
      tidb:
        replicas: 1
        baseImage: '{{meta.parameters.tidb_base_image}}'
        config: |
          [log]
          # Log level: debug, info, warn, error, fatal.
          level = "info"
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
      tikv:
        replicas: 3
        baseImage: '{{meta.parameters.tikv_base_image}}'
        storageClassName: "fast-disks"
        config: |
          ## Log levels: trace, debug, info, warning, error, critical.
          ## Note that `debug` and `trace` are only available in development builds.
          log-level = "info"
          [storage]
          reserve-space = "0"
        requests:
          cpu: 8000m
          memory: 32Gi
          storage: 1200Gi
        limits:
          cpu: 8000m
          memory: 32Gi
          storage: 1200Gi 
      version: '{{meta.parameters.base_image_version}}'         
  - name: tc2
    type: TIDB_CLUSTER
    spec:
      timezone: UTC
      cluster:
          name: tc
      pd:
          replicas: 1
          baseImage: '{{meta.parameters.pd_base_image}}'
          # more refer to: https://github.com/tikv/pd/blob/master/conf/config.toml
          # config is string type and toml format, I prefer uses https://www.convertsimple.com/convert-yaml-to-toml/ to transfer yaml to toml
          config: |
              [dashboard]
              internal-proxy = true  
          requests:
              cpu: 4000m
              memory: 8Gi
          limits:
              cpu: 4000m
              memory: 8Gi
      tidb:
          replicas: 1
          baseImage: '{{meta.parameters.tidb_base_image}}'
          config: |
              [log]
              # Log level: debug, info, warn, error, fatal.
              level = "info"
          requests:
              cpu: 8000m
              memory: 16Gi
          limits:
              cpu: 8000m
              memory: 16Gi
      tikv:
          replicas: 2
          baseImage: '{{meta.parameters.tikv_base_image}}'
          storageClassName: "fast-disks"
          config: |
              ## Log levels: trace, debug, info, warning, error, critical.
              ## Note that `debug` and `trace` are only available in development builds.
              log-level = "info"
              [storage]
              reserve-space = "0"
          requests:
              cpu: 8000m
              memory: 32Gi
              storage: 600Gi
          limits:
              cpu: 8000m
              memory: 32Gi
              storage: 600Gi
                #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 
      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-disk-full-stability-001
  caseName: oltp_disk_full_stability_001 
  arguments:
  - name: tc
    value: "{{testbed.tc}}"
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
  - name: casecmdparms
    value: '{{variables.CaseCmdParms}}'
failFast: false
