apiVersion: api/v1
kind: Plan
name: binlog-long-duration
schedule: "@daily"
failFast: false
tags:
- binlog
testbed:
  generateName: binlog-long-duration-testbed
  resourcePool: brie
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: "{{meta.parameters.onFailureReserveDurationOnWorkingHour}}"
        notification:
          feishu: >-
            https://open.feishu.cn/open-apis/bot/v2/hook/54a44124-87d9-4104-8f6d-176f09706ca3
      onSuccess:
        notification:
          feishu: >-
            https://open.feishu.cn/open-apis/bot/v2/hook/54a44124-87d9-4104-8f6d-176f09706ca3
  items:
  - name: upstream
    type: TIDB_CLUSTER
    spec:
      imagePullPolicy: Always
      pd:
        replicas: 1
        requests:
          cpu: 1000m
          memory: 4Gi
        limits:
          cpu: 1000m
          memory: 4Gi
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        replicas: 1
        requests:
          cpu: 4000m
          memory: 16Gi
        limits:
          cpu: 4000m
          memory: 16Gi
        baseImage: '{{meta.parameters.tikv_base_image}}'
        version: '{{meta.parameters.tikv_component_version}}'
      tidb:
        replicas: 1
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
        baseImage: '{{meta.parameters.tidb_base_image}}'
        version: '{{meta.parameters.tidb_component_version}}'
      pump:
        baseImage: "{{meta.parameters.binlog_base_image}}"
        replicas: 1
        requests:
          storage: 30Gi
        config: |
          addr = "0.0.0.0:8250"
          gc = 7
          heartbeat-interval = 2
        version: '{{meta.parameters.binlog_component_version}}'
      version: '{{meta.parameters.base_image_version}}'
  - name: downstream
    type: TIDB_CLUSTER
    spec:
      version: "release-4.0"
      imagePullPolicy: Always
      pd:
        replicas: 1
        baseImage: "{{meta.parameters.pd_base_image}}"
        requests:
          cpu: 1000m
          memory: 4Gi
        limits:
          cpu: 1000m
          memory: 4Gi
      tikv:
        replicas: 1
        baseImage: "{{meta.parameters.tikv_base_image}}"
        requests:
          cpu: 4000m
          memory: 16Gi
        limits:
          cpu: 4000m
          memory: 16Gi
      tidb:
        replicas: 1
        baseImage: "{{meta.parameters.tidb_base_image}}"
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
  - name: upstream-drainer
    type: TIDB_DRAINER
    spec:
      clusterVersion: "{{meta.parameters.binlog_component_version}}"
      clusterName: upstream
      baseImage: "{{meta.parameters.binlog_base_image}}"
      storage: 10Gi
      initialCommitTs: "-1"
      resources:
        requests:
          cpu: "2000m"
          memory: "4Gi"
      config: |
        detect-interval = 10
        [syncer]
        worker-count = 16
        txn-batch = 20
        disable-dispatch = false
        ignore-schemas = "INFORMATION_SCHEMA,PERFORMANCE_SCHEMA,mysql"
        safe-mode = false
        db-type = "tidb"
        [syncer.to]
        host = "downstream-tidb"
        user = "root"
        password = ""
        port = 4000
  - name: workload
    type: WORKLOAD_NODE
    spec:
      container:
        name: sysbench
        image: registry-mirror.pingcap.net/perconalab/sysbench
        command:
        - tail
        - "-f"
        - "/dev/null"
        resources:
          requests:
            memory: 1Gi
            cpu: 1000m

steps:
- name: binlog-compatibility
  caseName: binlog_compatibility
  arguments:
  - name: upstream
    value: "{{testbed.upstream}}"
  - name: downstream
    value: "{{testbed.downstream}}"
  - name: workload
    value: "{{testbed.workload}}"
  - name: upstreamdrainer
    value: "{{testbed.upstream-drainer}}"
