package gc

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("gc should work fine after change gc leader repeatly", "oltp_gc_rel_gc_leader_down", func() {
		OLTP_GC_REL_GC_LEADER_DOWN(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("gc should work fine after down one tikv", "oltp_gc_rel_tikv_down", func() {
		OLTP_GC_REL_TIKV_DOWN(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("gc should work fine after inject tidb latency between gc leader and tikv", "oltp_gc_rel_tidb_tikv_network_delay", func() {
		OLTP_GC_REL_TIDB_TIKV_NETWORK_DELAY(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("gc should work fine after gc leader recover from network loss chaos", "oltp_gc_rel_gc_leader_network_loss", func() {
		OLTP_GC_REL_GC_LEADER_NETWORK_LOSS(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("gc should work fine after pd leader recover from network partition chaos", "oltp_gc_rel_tikv_network_partition", func() {
		OLTP_GC_REL_TIKV_NETWORK_PARTITION(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms)
	})
	util.TestCase("Repeatly restore from br and drop.", "oltp_gc_stability_drop_001", func() {
		OLTP_GC_STABILITY_DROP_001(caseParams.Ctx, caseParams.Tc.(resource.TiDBCluster), caseParams.CaseCmdParms, caseParams.WorkloadRunParms, caseParams.Br, caseParams.S3Parms)
	})
}
