apiVersion: api/v1
kind: Plan
name: cc-cdc-test-tidb-sync
schedule: "@weekly"
tags: ["cdc"]
testbed:
  generateName: cdc-testbed-
  resourcePool: scenario
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureReserveDurationOnWorkingHour}}'
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/4f6c6406-c963-4d52-8641-cca17aa734e9
  items:
  - name: upstream
    type: TIDB_CLUSTER
    spec:
      imagePullPolicy: Always
      pd:
        replicas: 3
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        storageClassName: fast-disks
        replicas: 6
        config: |
          import.num-threads = 16
        requests:
          cpu: 10000m
          memory: 32Gi
        limits:
          cpu: 10000m
          memory: 64Gi
        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}}'
      ticdc:
        replicas: 6
        config: |
          [debug]
            enable-db-sorter = true
            enable-new-scheduler = true
        requests:
          cpu: 12000m
          memory: 32Gi
        limits:
          cpu: 12000m
          memory: 64Gi
        baseImage: '{{meta.parameters.ticdc_base_image}}'
        version: '{{meta.parameters.ticdc_component_version}}'
      version: '{{meta.parameters.base_image_version}}'
  - name: downstream
    type: TIDB_CLUSTER
    spec:
      imagePullPolicy: Always
      pd:
        replicas: 1
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        storageClassName: fast-disks
        replicas: 6
        config: |
          import.num-threads = 16
        requests:
          cpu: 10000m
          memory: 32Gi
        limits:
          cpu: 10000m
          memory: 64Gi
        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}}'

  - provider: "github.com/pingcap/test-infra/sdk/resource/impl/k8s.WorkloadNodeClient"
    name: br
    type: WORKLOAD_NODE
    spec:
      container:
        name: br
        image: '{{meta.parameters.br_image}}'
        resources:
          requests:
            cpu: 8000m
            memory: 16Gi
        command:
          - tail
          - "-f"
          - "/dev/null"
      artifact:
        artifactPaths:
          - /tmp/br.log*
  - provider: "github.com/pingcap/test-infra/sdk/resource/impl/k8s.WorkloadNodeClient"
    name: tools
    type: WORKLOAD_NODE
    spec:
      container:
        name: tools
        image: '{{meta.parameters.tools_image}}'
        resources:
          requests:
            cpu: 8000m
            memory: 8Gi
        command:
          - tail
          - "-f"
          - "/dev/null"

  - name: workload
    type: WORKLOAD_NODE
    spec:
      container:
        name: go-ycsb
        image: "{{meta.parameters.goycsb_mock_image}}"
        command:
          - tail
          - "-f"
          - /dev/null
        resources:
          requests:
            memory: 16Gi
            cpu: 8000m
steps:
- name: cc-cdc-br-serialized
  caseName: cc_cdc_br_serialized
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"
    - name: br
      value: '{{testbed.br}}'
    - name: mc
      value: '{{testbed.tools}}'


- name: cc-cdc-sync2
  caseName: cc_basic_incremental_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync3
  caseName: cc_minor_components_unavailable
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync4
  caseName: cc_all_node_restart_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync5
  caseName: cc_network_negative_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync6
  caseName: cc_pd_leader_switch_changefeed_admin_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync7
  caseName: cc_owner_switch_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync8
  caseName: cc_scale_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync9
  caseName: cc_tikv_scale_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"

- name: cc-cdc-sync10
  caseName: cc_tikv_unavailable_sync
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"
- name: cc-cdc-br-parallelized
  caseName: cc_cdc_br_parallelized
  arguments:
    - name: upstream
      value: "{{testbed.upstream}}"
    - name: downstream
      value: "{{testbed.downstream}}"
    - name: workload
      value: "{{testbed.workload}}"
    - name: br
      value: '{{testbed.br}}'
    - name: mc
      value: '{{testbed.tools}}'

