package testcases

import (
	"time"

	"github.com/pingcap/test-infra/caselib/pkg/steps"
	"github.com/pingcap/test-infra/caselib/pkg/utils"
	"github.com/pingcap/test-infra/common/model/resource"
	_ "github.com/pingcap/test-infra/sdk/resource/impl/k8s"
)

var _ = AddTestCase("binlog_clustered_index", func() steps.Step {
	var (
		upStream     = &resource.ResourceHandle{}
		downStream   = &resource.ResourceHandle{}
		workLoad     = &resource.ResourceHandle{}
		lightningRes = &resource.ResourceHandle{}
		opts         = &steps.LightningImportOpts{}
		dbName       = "clustered"
	)

	return steps.
		NewBuilder().
		LoadEnv().
		LoadResourceFromEnv(utils.ResourcePrefix+"upstream", upStream).
		LoadResourceFromEnv(utils.ResourcePrefix+"downstream", downStream).
		LoadResourceFromEnv(utils.ResourcePrefix+"workload", workLoad).
		LoadResourceFromEnv(utils.ParamPrefix+"import_basic_opts", opts).
		LoadResourceFromEnv(utils.ResourcePrefix+"lightning", lightningRes).
		CreateDatabase(upStream, dbName).
		// Import clustered index table, nonclustered index table and auto random table
		LightningImport(opts, lightningRes, upStream).
		SendBinlogFinishMark(upStream, dbName).
		WaitBinlogFinishMark(downStream, dbName, 10*time.Minute).
		CheckBinlogConsistency(upStream, downStream, dbName).
		Build()
})
