{
  "templates": [
    {
      "name": "case-1-2",
      "inputs": {
        "parameters": [
          {
            "name": "tidb"
          },
          {
            "name": "case-1-2-timeout",
            "default": ""
          }
        ]
      },
      "outputs": {
        "artifacts": [
          {
            "name": "archive",
            "path": "/tmp/case-1-2",
            "optional": true
          },
          {
            "name": "output",
            "path": "/tmp/case-1-2.out",
            "archive": {
              "none": {}
            },
            "optional": true
          }
        ]
      },
      "metadata": {
        "labels": {
          "caseExecID": "3",
          "caseID": "1",
          "role": "case",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "hub.pingcap.net/qa/bank:v1.0.0",
        "command": [
          "bank",
          "-txn-mode=optimistic"
        ],
        "env": [
          {
            "name": "TI_ARCHIVE",
            "value": "/tmp/case-1-2"
          },
          {
            "name": "TI_CASE_EXEC_ID",
            "value": "3"
          },
          {
            "name": "TI_OUTPUT",
            "value": "/tmp/case-1-2.out"
          },
          {
            "name": "TI_PARAM_RES_tidb",
            "value": "{{inputs.parameters.tidb}}"
          },
          {
            "name": "TI_PARAM_STR_txn-mode",
            "value": "optimistic"
          }
        ],
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      },
      "timeout": "{{inputs.parameters.case-1-2-timeout}}"
    },
    {
      "name": "case-2-4",
      "inputs": {
        "parameters": [
          {
            "name": "case-2-4-timeout",
            "default": ""
          }
        ]
      },
      "outputs": {
        "artifacts": [
          {
            "name": "archive",
            "path": "/tmp/case-2-4",
            "optional": true
          },
          {
            "name": "output",
            "path": "/tmp/case-2-4.out",
            "archive": {
              "none": {}
            },
            "optional": true
          }
        ]
      },
      "metadata": {
        "labels": {
          "caseExecID": "5",
          "caseID": "2",
          "role": "case",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "hub.pingcap.net/qa/jepsen:v1.0.0",
        "command": [
          "run-jepsen.sh",
          "--workload=append"
        ],
        "env": [
          {
            "name": "TI_ARCHIVE",
            "value": "/tmp/case-2-4"
          },
          {
            "name": "TI_CASE_EXEC_ID",
            "value": "5"
          },
          {
            "name": "TI_OUTPUT",
            "value": "/tmp/case-2-4.out"
          },
          {
            "name": "TI_PARAM_STR_workload",
            "value": "append"
          },
          {
            "name": "nodes",
            "value": "n1,n2,n3,n4,n5"
          }
        ],
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      },
      "timeout": "{{inputs.parameters.case-2-4-timeout}}"
    },
    {
      "name": "case-2-6",
      "inputs": {
        "parameters": [
          {
            "name": "case-2-6-timeout",
            "default": ""
          }
        ]
      },
      "outputs": {
        "artifacts": [
          {
            "name": "archive",
            "path": "/tmp/case-2-6",
            "optional": true
          },
          {
            "name": "output",
            "path": "/tmp/case-2-6.out",
            "archive": {
              "none": {}
            },
            "optional": true
          }
        ]
      },
      "metadata": {
        "labels": {
          "caseExecID": "7",
          "caseID": "2",
          "role": "case",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "hub.pingcap.net/qa/jepsen:v1.0.0",
        "command": [
          "run-jepsen.sh",
          "--workload=register"
        ],
        "env": [
          {
            "name": "TI_ARCHIVE",
            "value": "/tmp/case-2-6"
          },
          {
            "name": "TI_CASE_EXEC_ID",
            "value": "7"
          },
          {
            "name": "TI_OUTPUT",
            "value": "/tmp/case-2-6.out"
          },
          {
            "name": "TI_PARAM_STR_workload",
            "value": "register"
          },
          {
            "name": "nodes",
            "value": "n1,n2,n3,n4,n5"
          }
        ],
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      },
      "timeout": "{{inputs.parameters.case-2-6-timeout}}"
    },
    {
      "name": "pipeline",
      "inputs": {
        "parameters": [
          {
            "name": "tidb"
          }
        ]
      },
      "outputs": {},
      "metadata": {},
      "dag": {
        "target": "bank append register",
        "tasks": [
          {
            "name": "bank",
            "template": "case-1-2",
            "arguments": {
              "parameters": [
                {
                  "name": "tidb",
                  "value": "{{inputs.parameters.tidb}}"
                }
              ]
            }
          },
          {
            "name": "append",
            "template": "case-2-4",
            "arguments": {},
            "depends": "bank"
          },
          {
            "name": "register",
            "template": "case-2-6",
            "arguments": {},
            "depends": "bank"
          }
        ],
        "failFast": true
      }
    },
    {
      "name": "plan-2-1-setup",
      "inputs": {},
      "outputs": {
        "parameters": [
          {
            "name": "plan-2-1-setup-output",
            "valueFrom": {
              "path": "/tmp/plan-2-1/output"
            },
            "globalName": "testbed-output"
          },
          {
            "name": "tidb",
            "valueFrom": {
              "path": "/tmp/plan-2-1/items/tidb"
            }
          }
        ]
      },
      "metadata": {
        "labels": {
          "planID": "2",
          "role": "setUp",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "{{workflow.parameters.setupImage}}",
        "command": [
          "/bin/bash",
          "-c"
        ],
        "args": [
          "total=1\nallocated=1\niter=0\nwhile true\ndo\n    printenv TESTBED_INPUT_SPEC | tcctl testbed create --wait-timeout=30m --output-spec=\"${TESTBED_OUTPUT_SPEC}\" --credential=\"\" -f - -r http://rms-apiserver-service.test-infra\n    allocated=$?\n    iter=$(($iter + 1))\n    if [ $allocated = 0 ] || [ $iter -ge $total ]\n    then break\n    fi\n    sleepSeconds=$(( ( $RANDOM % 10 +  10 * $iter ) * 60 ))\n    echo sleep ${sleepSeconds}\n    sleep ${sleepSeconds}\ndone\nif [ $allocated != 0 ]\nthen exit $allocated\nfi"
        ],
        "env": [
          {
            "name": "TESTBED_INPUT_SPEC",
            "value": "{\"items\":[{\"name\":\"tidb\",\"spec\":{\"version\":\"master\"},\"type\":\"TIDB_CLUSTER\"}],\"meta\":{\"to\":[{\"name\":\"tipocket-runner\",\"kind\":\"ServiceAccount\",\"namespace\":\"testground\"}],\"accounting\":{\"name\":\"0\",\"kind\":\"ID\",\"namespace\":\"\"}},\"name\":\"testbed-\",\"physicalResourceRequest\":{\"cpu\":{},\"memory\":{}},\"resourcePool\":\"default\", \"rmsUrl\":\"http://rms-apiserver-service.test-infra\",\"reclaimPolicy\":{\"gcStrategy\":{},\"lease\":\"\"}}"
          },
          {
            "name": "TESTBED_OUTPUT_SPEC",
            "value": "{\"output\":\"/tmp/plan-2-1/output\",\"items\":[{\"name\":\"tidb\",\"path\":\"/tmp/plan-2-1/items/tidb\"}]}"
          },
          {
            "name": "TOKEN",
            "valueFrom": {
              "secretKeyRef": {
                "name": "rms-secret",
                "key": "token"
              }
            }
          }
        ],
        "resources": {
          "requests": {
            "cpu": "100m"
          }
        },
        "imagePullPolicy": "Always"
      }
    },
    {
      "name": "teardown",
      "inputs": {},
      "outputs": {},
      "metadata": {
        "labels": {
          "role": "tearDown"
        }
      },
      "container": {
        "name": "",
        "image": "{{workflow.parameters.setupImage}}",
        "command": [
          "/bin/sh",
          "-c"
        ],
        "args": [
          "\nif [ {{workflow.status}} = \"Succeeded\" ]; then\n\ttcctl testbed complete $(printenv TESTBED_SETUP_OUTPUT | jq '.name' -r) --type Success  -r http://rms-apiserver-service.test-infra\nelse\n\ttcctl testbed complete $(printenv TESTBED_SETUP_OUTPUT | jq '.name' -r) --type Failure  -r http://rms-apiserver-service.test-infra\nfi\n"
        ],
        "env": [
          {
            "name": "TESTBED_SETUP_OUTPUT",
            "value": "{{workflow.outputs.parameters.testbed-output}}"
          },
          {
            "name": "TOKEN",
            "valueFrom": {
              "secretKeyRef": {
                "name": "rms-secret",
                "key": "token"
              }
            }
          }
        ],
        "resources": {},
        "imagePullPolicy": "Always"
      }
    },
    {
      "name": "plan-2-1",
      "inputs": {},
      "outputs": {},
      "metadata": {},
      "dag": {
        "target": "pipeline",
        "tasks": [
          {
            "name": "plan-2-1-setup",
            "template": "plan-2-1-setup",
            "arguments": {}
          },
          {
            "name": "pipeline",
            "template": "pipeline",
            "arguments": {
              "parameters": [
                {
                  "name": "tidb",
                  "value": "{{tasks.plan-2-1-setup.outputs.parameters.tidb}}"
                }
              ]
            },
            "dependencies": [
              "plan-2-1-setup"
            ]
          }
        ]
      }
    }
  ],
  "entrypoint": "plan-2-1",
  "arguments": {"parameters":  [{"name": "setupImage", "value":"setup:latest"}]},
  "onExit": "teardown"
}
