apiVersion: api/v1
kind: Plan
name: endless-oltp-dr-auto-sync-tiup
#type: ONE_SHOT
schedule: '0 0 * * 1,2,3,4,6'
tags: []
testbed:
  generateName: endless-oltp-
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureReserveDurationOnWorkingHour}}'
        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: tiup
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /root/result/
                  - /root/.tiup/logs
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 1000m
                      storage: 100Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: lb
      type: LOADBALANCER
      spec:
          selector:
              workload-app: tidb
          port: 4000                  

    - name: tidb1
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tidb-4000/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              labels:
                  workload-app: tidb
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 4000m
                      storage: 100Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"

    - name: tidb2
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tidb-4000/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              labels:
                  workload-app: tidb              
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 4000m
                      storage: 100Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: tikv1
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tikv-20160/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 16Gi
                      cpu: 5000m
                      storage: 1000Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"

    - name: tikv2
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tikv-20160/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              imagePullPolicy: Always
              storageClassName: "fast-disks"
              resources:
                  requests:
                      memory: 16Gi
                      cpu: 5000m
                      storage: 1000Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: tikv3
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tikv-20160/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 16Gi
                      cpu: 5000m
                      storage: 1000Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"  
    - name: tikv4
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tikv-20160/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              # storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 16Gi
                      cpu: 5000m
                      storage: 1000Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: tikv5
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/tikv-20160/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              # storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 16Gi
                      cpu: 5000m
                      storage: 1000Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"                                                    
    - name: pd1
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/pd-2379/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              #storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 2000m
                      storage: 100Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: pd2
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/pd-2379/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              #storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 2000m
                      storage: 100Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
    - name: pd3
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tiup/deploy/pd-2379/log
          container:
              name: node
              image: hub.pingcap.net/qa/base-image
              #storageClassName: "fast-disks"
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 8Gi
                      cpu: 2000m
                      storage: 100Gi

              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"                  
    - name: benchtoolset
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /root/wkload/
          container:
              name: node
              image: '{{meta.parameters.bench_toolset_image}}'
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 2Gi
                      cpu: 1000m
                      storage: 50Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
              command:
                  - tail
                  - "-F"
                  - "/dev/null"

    - name: br
      type: WORKLOAD_NODE # 测试资源类型: WORKLOAD_NODE
      spec:
          artifact:
              artifactPaths: # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
                  - /tmp/br.log*
          container:
              name: node
              image: '{{meta.parameters.br_image}}'
              imagePullPolicy: Always
              resources:
                  requests:
                      memory: 2Gi
                      cpu: 1000m
                      storage: 20Gi
              securityContext:
                  capabilities:
                      add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
              volumeMount:
                  mountPath: "/tiup"
              command:
                  - tail
                  - "-F"
                  - "/dev/null"  
steps:
- name: oltp-tiup-dr-autosync-001
  caseName: oltp_tiup_dr_autosync_001
  arguments:
  - name: tiup
    value: '{{testbed.tiup}}'   
  - name: lb
    value: '{{testbed.lb}}'      
  - name: pd1
    value: '{{testbed.pd1}}' 
  - name: pd2
    value: '{{testbed.pd2}}' 
  - name: pd3
    value: '{{testbed.pd3}}' 
  - name: tidb1
    value: '{{testbed.tidb1}}' 
  - name: tidb2
    value: '{{testbed.tidb2}}' 
  - name: tikv1
    value: '{{testbed.tikv1}}'   
  - name: tikv2
    value: '{{testbed.tikv2}}'  
  - name: tikv3
    value: '{{testbed.tikv3}}'  
  - name: tikv4
    value: '{{testbed.tikv4}}'    
  - name: tikv5
    value: '{{testbed.tikv5}}'                            
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}' 
  - name: version
    value: '{{meta.parameters.tiup_target_version}}'  
  - name: tiupMirror
    value: '{{meta.parameters.tiup_mirror}}'          
- name: oltp-tiup-dr-autosync-002
  caseName: oltp_tiup_dr_autosync_002
  arguments:
  - name: tiup
    value: '{{testbed.tiup}}'
  - name: lb
    value: '{{testbed.lb}}'         
  - name: pd1
    value: '{{testbed.pd1}}' 
  - name: pd2
    value: '{{testbed.pd2}}' 
  - name: pd3
    value: '{{testbed.pd3}}' 
  - name: tidb1
    value: '{{testbed.tidb1}}' 
  - name: tidb2
    value: '{{testbed.tidb2}}' 
  - name: tikv1
    value: '{{testbed.tikv1}}'   
  - name: tikv2
    value: '{{testbed.tikv2}}'  
  - name: tikv3
    value: '{{testbed.tikv3}}'  
  - name: tikv4
    value: '{{testbed.tikv4}}'    
  - name: tikv5
    value: '{{testbed.tikv5}}'                            
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'  
  - name: version
    value: '{{meta.parameters.tiup_target_version}}' 
  - name: tiupMirror
    value: '{{meta.parameters.tiup_mirror}}'        
- name: oltp-tiup-dr-autosync-003
  caseName: oltp_tiup_dr_autosync_003
  arguments:
  - name: tiup
    value: '{{testbed.tiup}}' 
  - name: lb
    value: '{{testbed.lb}}'        
  - name: pd1
    value: '{{testbed.pd1}}' 
  - name: pd2
    value: '{{testbed.pd2}}' 
  - name: pd3
    value: '{{testbed.pd3}}' 
  - name: tidb1
    value: '{{testbed.tidb1}}' 
  - name: tidb2
    value: '{{testbed.tidb2}}' 
  - name: tikv1
    value: '{{testbed.tikv1}}'   
  - name: tikv2
    value: '{{testbed.tikv2}}'  
  - name: tikv3
    value: '{{testbed.tikv3}}'  
  - name: tikv4
    value: '{{testbed.tikv4}}'    
  - name: tikv5
    value: '{{testbed.tikv5}}'                            
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'  
  - name: version
    value: '{{meta.parameters.tiup_target_version}}' 
  - name: tiupMirror
    value: '{{meta.parameters.tiup_mirror}}'     
# Skip for issue: https://github.com/tikv/pd/issues/4752       
# - name: oltp-tiup-dr-autosync-004
#   caseName: oltp_tiup_dr_autosync_004
#   caseImage: hub.pingcap.net/jianghongmei/endless-oltp-tiup:latest
#   arguments:
#   - name: tiup
#     value: '{{testbed.tiup}}'   
#   - name: pd1
#     value: '{{testbed.pd1}}' 
#   - name: pd2
#     value: '{{testbed.pd2}}' 
#   - name: pd3
#     value: '{{testbed.pd3}}' 
#   - name: tidb1
#     value: '{{testbed.tidb1}}' 
#   - name: tidb2
#     value: '{{testbed.tidb2}}' 
#   - name: tikv1
#     value: '{{testbed.tikv1}}'   
#   - name: tikv2
#     value: '{{testbed.tikv2}}'  
#   - name: tikv3
#     value: '{{testbed.tikv3}}'  
#   - name: tikv4
#     value: '{{testbed.tikv4}}'    
#   - name: tikv5
#     value: '{{testbed.tikv5}}'                            
#   - name: benchtoolset
#     value: '{{testbed.benchtoolset}}'
#   - name: br
#     value: '{{testbed.br}}'  
#   - name: version
#     value: '{{meta.parameters.tiup_target_version}}'  
  # - name: tiupMirror
  #   value: '{{meta.parameters.tiup_mirror}}'                                  
failFast: true
