package scale

import (
	"github.com/pingcap/endless/pkg/util"
	"github.com/pingcap/endless/testcase/oltp/oltppkg"
	"github.com/pingcap/test-infra/sdk/resource"
)

func TestSuite(caseParams *oltppkg.CaseParams) {
	util.TestCase("should keep system normal while scaling-out", "oltp_scale_out_fun_001", func() {
		OLTP_SCALE_OUT_FUN_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should keep system normal while scaling-in", "oltp_scale_in_fun_001", func() {
		OLTP_SCALE_IN_FUN_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("Scale in tikvs in parallel via pd-ctl", "oltp_scale_in_fun_002", func() {
		OLTP_SCALE_IN_FUN_002(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Scale in tikvs via pd-ctl, then cancle scale in", "oltp_scale_in_fun_003", func() {
		OLTP_SCALE_IN_FUN_003(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Scale in/out by 50%", "oltp_scale_stability_fun_001", func() {
		OLTP_SCALE_STABILITY_FUN_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Scale in/out with periodically inject chaos to random tikv", "oltp_scale_stability_rel_001", func() {
		OLTP_SCALE_STABILITY_REL_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Scale in/out by 50% with periodically inject chaos to one zone tikvs", "oltp_scale_stability_rel_002", func() {
		OLTP_SCALE_STABILITY_REL_002(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Scale in/out by 50% with periodically inject chaos to pd leader", "oltp_scale_stability_rel_003", func() {
		OLTP_SCALE_STABILITY_REL_003(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
}
