scenario:
  id: 16aa1743-6af8-4d3a-8bad-34c23c8d12fd
  context:
    auth:
      type: digest
    base_path: /v1beta1
    host: null # serverless.staging.tidbapi.com
  description: ''
  name: test
steps:
- operation_id: ClusterService_CreateCluster
  request_type: http
  # regionId is different with dedicated
  request: |-
    {
      "method": "POST",
      "path": "/clusters",
      "headers": {},
      "query_params": {},
      "body": {
        "displayName": "e2e-essential-branch",
        "region": {
          "name": "regions/aws-us-east-1"
        },
        "rootPassword": "pi31415926536",
        "autoScaling": {
          "minRcu": 2000,
          "maxRcu": 4000
        },
        "endpoints": {
          "public": {
            "authorizedNetworks": [
              {
                "startIpAddress": "0.0.0.0",
                "endIpAddress": "255.255.255.255",
                "displayName": "all-access"
              }
            ]
          }
        },
        "labels": {
          "tidb.cloud/project": "{projectId}"
        }
      },
      "body_params": {
        "projectId": "project_id"
      },
      "auth": {
        "auth_type": "digest",
        "content": {"public_key": "placeholder","private_key": "placeholder"}
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": ""
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "cluster_1",
          "eval": "body.clusterId"
        }
      ]
    }
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 0
- operation_id: ClusterService_GetCluster
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/clusters/{clusterId}?view=FULL",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.state == 'ACTIVE' && body.endpoints.public.host != '' && body.userPrefix != ''"
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "cluster_userprefix",
          "eval": "body.userPrefix"
        },
        {
          "key": "cluster_endpoint",
          "eval": "body.endpoints.public.host"
        },
        {
          "key": "cluster_port",
          "eval": "body.endpoints.public.port"
        }
      ]
    }
  description: ''
  max_retries: 10
  delay_after: 30
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 1
- operation_id: BranchService_ListBranches
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/clusters/{clusterId}/branches",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.totalSize == 0"
    }
  save: null
  description: ''
  max_retries: 10
  delay_after: 30
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 2
- operation_id: BranchService_CreateBranch
  request_type: http
  request: |-
    {
      "method": "POST",
      "path": "/clusters/{clusterId}/branches",
      "headers": {},
      "query_params": {},
      "body": {
        "displayName": "branch-1st",
        "rootPassword": "pi31415926"
      },
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": ""
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "branch_1",
          "eval": "body.branchId"
        }
      ]
    }
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 3
- operation_id: BranchService_GetBranch
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/clusters/{clusterId}/branches/{branchId}?view=FULL",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1",
        "branchId": "branch_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.state == 'ACTIVE' && body.endpoints.public.host != '' && body.userPrefix != ''"
    }
  save: |-
    {
      "placeholder": [
        {
          "key": "branch_userprefix",
          "eval": "body.userPrefix"
        }
      ]
    }
  description: ''
  max_retries: 10
  delay_after: 30
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 4
- operation_id: ExecuteSQL
  request_type: cmd_mysqlsh
  request: |-
    {
      "args": [
        "mysql://{branch_userprefix}.root:pi31415926@{cluster_endpoint}:{cluster_port}/test",
        "--sql",
        "-e",
        "CREATE TABLE IF NOT EXISTS tt (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), value INT); INSERT INTO tt (name, value) VALUES ('test1', 100), ('test2', 200);",
        "--result-format",
        "json",
        "--quiet-start",
        "2"
      ],
      "args_params": {
        "branch_userprefix": "branch_userprefix",
        "cluster_endpoint": "cluster_endpoint",
        "cluster_port": "cluster_port"
      },
      "name": "mysqlsh"
    }
  expect: |-
    {
      "status_code": 0,
      "cel": ""
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 5
- operation_id: ExecuteSQL
  request_type: cmd_mysqlsh
  request: |-
    {
      "args": [
        "mysql://{cluster_userprefix}.root:pi31415926536@{cluster_endpoint}:{cluster_port}/test",
        "--sql",
        "-e",
        "SELECT NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'test') as is_empty;",
        "--result-format",
        "json",
        "--quiet-start",
        "2"
      ],
      "args_params": {
        "cluster_userprefix": "cluster_userprefix",
        "cluster_endpoint": "cluster_endpoint",
        "cluster_port": "cluster_port"
      },
      "name": "mysqlsh"
    }
  expect: |-
    {
      "status_code": 0,
      "cel": "output.is_empty == 1"
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 6
- operation_id: ExecuteSQL
  request_type: cmd_mysqlsh
  request: |-
    {
      "args": [
        "mysql://{branch_userprefix}.root:pi31415926@{cluster_endpoint}:{cluster_port}/test",
        "--sql",
        "-e",
        "SELECT value FROM tt WHERE name = 'test1';",
        "--result-format",
        "json",
        "--quiet-start",
        "2"
      ],
      "args_params": {
        "branch_userprefix": "branch_userprefix",
        "cluster_endpoint": "cluster_endpoint",
        "cluster_port": "cluster_port"
      },
      "name": "mysqlsh"
    }
  expect: |-
    {
      "status_code": 0,
      "cel": "output.value == 100"
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 7
- operation_id: BranchService_ResetBranch
  request_type: http
  request: |-
    {
      "method": "POST",
      "path": "/clusters/{clusterId}/branches/{branchId}:reset",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1",
        "branchId": "branch_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": ""
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 8
- operation_id: BranchService_GetBranch
  request_type: http
  request: |-
    {
      "method": "GET",
      "path": "/clusters/{clusterId}/branches/{branchId}?view=FULL",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1",
        "branchId": "branch_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": "body.state == 'ACTIVE'"
    }
  save: null
  description: ''
  max_retries: 10
  delay_after: 30
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 9
# password is cleared after reset, so can't check data again
- operation_id: BranchService_DeleteBranch
  request_type: http
  request: |-
    {
      "method": "DELETE",
      "path": "/clusters/{clusterId}/branches/{branchId}",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1",
        "branchId": "branch_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": ""
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 10
- operation_id: ClusterService_DeleteCluster
  request_type: http
  request: |-
    {
      "method": "DELETE",
      "path": "/clusters/{clusterId}",
      "headers": {},
      "query_params": {},
      "body": {},
      "auth": {
        "auth_type": "digest",
        "content": {
          "public_key": "placeholder",
          "private_key": "placeholder"
        }
      },
      "path_params": {
        "clusterId": "cluster_1"
      }
    }
  expect: |-
    {
      "status_code": 200,
      "cel": ""
    }
  save: null
  description: ''
  max_retries: 0
  delay_after: 0
  name: ''
  continue_on_unexpected: false
  stage: ''
  meta: '{}'
  generation_id: ''
  order: 11
