package testcases

import (
	"github.com/pingcap/test-infra/caselib/pkg/spec"
	"github.com/pingcap/test-infra/caselib/pkg/steps"
	"github.com/pingcap/test-infra/caselib/pkg/utils"
	_ "github.com/pingcap/test-infra/sdk/resource/impl/k8s"
)

// dm_donwstream_version_compatibility case
// 1. env init
// 2. convert TiDB to version A
// 3. run dm_migrate_basic
// 4. repeat step 2 and step 3 for version B and C

func init() {
	var (
		name           = "dm_downstream_version_compatibility"
		env            = newCommonEnv()
		version        string
		taskName       = "test-infra"
		sourceNameList = []string{"source-0"}
	)
	var _ = AddTestCase(spec.CaseName(name), func() steps.Step {
		env.init().b.
			LoadParamFromEnv(utils.ParamPrefix+"tidbVersionA", &version).
			DmUpgradeTiDB(env.DownStream, &version, 0)
		env.runBasic(name, taskName, sourceNameList)
		env.b.LoadParamFromEnv(utils.ParamPrefix+"tidbVersionB", &version).
			DmUpgradeTiDB(env.DownStream, &version, 0)
		env.runBasic(name, taskName, sourceNameList)
		env.b.LoadParamFromEnv(utils.ParamPrefix+"tidbVersionC", &version).
			DmUpgradeTiDB(env.DownStream, &version, 0)
		env.runBasic(name, taskName, sourceNameList)
		return env.toBuilder().Build()
	})
}
