package tikvrel

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 system keep normal when one instance fault or one az fault", "oltp_ha_baseline_001", func() {
		OLTP_AZ_REL_BASELINE(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.WorkloadNode, caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
		OLTP_NODE_REL_BASELINE(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.WorkloadNode, caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv restart", "oltp_tikv_rel_tikv_restart", func() {
		OLTP_TiKV_REL_TiKV_RESTART(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv down", "oltp_tikv_rel_tikv_down", func() {
		OLTP_TiKV_REL_TiKV_DOWN(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv network-loss", "oltp_tikv_rel_tikv_network_loss", func() {
		OLTP_TiKV_REL_TiKV_NETWORK_LOSS(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv network-delay", "oltp_tikv_rel_tikv_network_delay", func() {
		OLTP_TiKV_REL_TiKV_NETWORK_DELAY(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv IODelay", "oltp_tikv_rel_tikv_io_delay", func() {
		OLTP_TiKV_REL_TiKV_IO_DELAY(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv network-partition", "oltp_tikv_rel_network_parition_001", func() {
		OLTP_TiKV_REL_NETWORK_PARTITION_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv down more than 30 minutes", "oltp_tikv_rel_network_parition_002", func() {
		OLTP_TiKV_REL_NETWORK_PARTITION_002(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when one tikv down more than 30 minutes", "oltp_tikv_rel_network_parition_003", func() {
		OLTP_TiKV_REL_NETWORK_PARTITION_003(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when two tikv network-loss whitin 10min when 5 replicas config", "oltp_tikv_rel_two_tikv_network_loss", func() {
		OLTP_TiKV_REL_TWO_TIKV_NETWORK_LOSS(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when two tikv fault more than 30min when 5 replicas config", "oltp_tikv_rel_two_tikv_random_failure", func() {
		OLTP_TiKV_REL_TWO_TIKV_RANDOM_FAILURE(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should recover the QPS in 1 minutes and system keep normal when two tikv network-delay more than 30min when 5 replicas config", "oltp_tikv_rel_two_tikv_network_delay", func() {
		OLTP_TiKV_REL_TWO_TIKV_NETWORK_DELAY(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should keep system normal while scheduling and injecting tikv down for more than 30 minutes", "oltp_tikv_stability_rel_001", func() {
		OLTP_STABILITY_REL_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms, caseParams.SkipAfterEachCheck)
	})
	util.TestCase("should keep system normal while scheduling, splitting and injecting tikv network faults repeatedly", "oltp_tikv_stability_rel_002", func() {
		OLTP_STABILITY_REL_002(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms, caseParams.SkipAfterEachCheck)
	})
	util.TestCase("should keep system normal while modify configuration online and inject tikv down repeatedly", "oltp_tikv_stability_rel_004", func() {
		OLTP_STABILITY_REL_004(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.WorkloadRunParms.Cmdpr, caseParams.CaseCmdParms)
	})
	util.TestCase("should keep system normal while big value insert", "oltp_big_value_insert_rel", func() {
		OLTP_BIG_VALUE_INSERT_REL(caseParams.Ctx, caseParams.Tc, caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
}
