apiVersion: api/v1
kind: Plan
name: utf-go-async-commit
tags: ['team:transaction', 'owner:zyguan', 'branch:master']
schedule: '@daily'
testbed:
  generateName: utf-go-
  resourcePool: test-store
  items:
  - name: tidb-default
    type: TIDB_CLUSTER
    spec:
      version: '{{meta.parameters.base_image_version}}-failpoint'
      pd:
        replicas: 1
        baseImage: '{{meta.parameters.pd_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/tikv/pd/server/api/enableFailpointAPI=return"
      tikv:
        replicas: 3
        baseImage: '{{meta.parameters.tikv_base_image}}'
        config: |
          [storage]
          reserve-space = 0
          enable-async-apply-prewrite = true
          [pessimistic-txn]
          pipelined = true
          in-memory = true
      tidb:
        replicas: 1
        baseImage: '{{meta.parameters.tidb_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/pingcap/tidb/server/enableTestAPI=return"
        config: |
          new_collations_enabled_on_first_bootstrap = true
          [experimental]
          allow-expression-index = true
  - name: tidb-long-tso-update-interval
    type: TIDB_CLUSTER
    spec:
      version: '{{meta.parameters.base_image_version}}-failpoint'
      pd:
        replicas: 1
        baseImage: '{{meta.parameters.pd_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/tikv/pd/server/api/enableFailpointAPI=return"
        config: |
          tso-update-physical-interval = "10s"
      tikv:
        replicas: 3
        baseImage: '{{meta.parameters.tikv_base_image}}'
        config: |
          [storage]
          reserve-space = 0
          enable-async-apply-prewrite = true
          [pessimistic-txn]
          pipelined = true
          in-memory = true
      tidb:
        replicas: 1
        baseImage: '{{meta.parameters.tidb_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/pingcap/tidb/server/enableTestAPI=return"
        config: |
          new_collations_enabled_on_first_bootstrap = true
          [experimental]
          allow-expression-index = true
  - name: tidb-no-region-merge
    type: TIDB_CLUSTER
    spec:
      version: '{{meta.parameters.base_image_version}}-failpoint'
      pd:
        replicas: 1
        baseImage: '{{meta.parameters.pd_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/tikv/pd/server/api/enableFailpointAPI=return"
        config: |
          tso-update-physical-interval = "10s"
          [schedule]
          max-merge-region-size = 1
          max-merge-region-keys = 1
          split-merge-interval = "10h"
          enable-cross-table-merge = false
      tikv:
        replicas: 3
        baseImage: '{{meta.parameters.tikv_base_image}}'
        config: |
          [storage]
          reserve-space = 0
          enable-async-apply-prewrite = true
          [pessimistic-txn]
          pipelined = true
          in-memory = true
      tidb:
        replicas: 1
        baseImage: '{{meta.parameters.tidb_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/pingcap/tidb/server/enableTestAPI=return"
        config: |
          new_collations_enabled_on_first_bootstrap = true
          [experimental]
          allow-expression-index = true
pipeline:
- name: TIDB-ASYNC-COMMIT-TS-MONOTONICITY
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_TS_MONOTONICITY}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: []
- name: TIDB-ASYNC-COMMIT-TS-MONOTONICITY-PESSIMISTIC
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_TS_MONOTONICITY_PESSIMISTIC}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-TS-MONOTONICITY.Succeeded || TIDB-ASYNC-COMMIT-TS-MONOTONICITY.Failed]
- name: TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_PESSIMISTIC_TXN_CONFLICT}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-TS-MONOTONICITY-PESSIMISTIC.Succeeded || TIDB-ASYNC-COMMIT-TS-MONOTONICITY-PESSIMISTIC.Failed]
- name: TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT-LONG
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_PESSIMISTIC_TXN_CONFLICT_LONG}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT.Succeeded || TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT.Failed]
- name: TIDB-ASYNC-COMMIT-CHANGE-NULL-TO-NON-NULL
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_CHANGE_NULL_TO_NON_NULL}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT-LONG.Succeeded || TIDB-ASYNC-COMMIT-PESSIMISTIC-TXN-CONFLICT-LONG.Failed]
- name: TIDB-ASYNC-COMMIT-RESOLVE
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_RESOLVE}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-CHANGE-NULL-TO-NON-NULL.Succeeded || TIDB-ASYNC-COMMIT-CHANGE-NULL-TO-NON-NULL.Failed]
- name: TIDB-ASYNC-COMMIT-IDEMPOTENT
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_IDEMPOTENT}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-ASYNC-COMMIT-RESOLVE.Succeeded || TIDB-ASYNC-COMMIT-RESOLVE.Failed]
- name: TIDB-1PC-FALLBACK-ON-SPLIT
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_1PC_FALLBACK_ON_SPLIT}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TIDB-ASYNC-COMMIT-IDEMPOTENT.Succeeded || TIDB-ASYNC-COMMIT-IDEMPOTENT.Failed]
- name: TIDB-1PC-FALLBACK-ON-SPLIT-LONG
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_1PC_FALLBACK_ON_SPLIT_LONG}
  - {name: params, value: '{"time_limit":"10m"}'}
  - {name: tidb, value: '{{testbed.tidb-long-tso-update-interval}}'}
  after: [TIDB-1PC-FALLBACK-ON-SPLIT.Succeeded || TIDB-1PC-FALLBACK-ON-SPLIT.Failed]
- name: TIDB-ASYNC-COMMIT-LINEARIZABILITY
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_LINEARIZABILITY}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-no-region-merge}}'}
  after: [TIDB-1PC-FALLBACK-ON-SPLIT-LONG.Succeeded || TIDB-1PC-FALLBACK-ON-SPLIT-LONG.Failed]
- name: TIDB-ASYNC-COMMIT-PREWRITE-RPC-RETRY
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TIDB_ASYNC_COMMIT_PREWRITE_RPC_RETRY}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TIDB-ASYNC-COMMIT-LINEARIZABILITY.Succeeded || TIDB-ASYNC-COMMIT-LINEARIZABILITY.Failed]
