package tiup_upgrade

import (
	"context"
	"fmt"
	"net/url"
	"time"

	. "github.com/pingcap/endless/pkg/matcher"
	"github.com/pingcap/endless/pkg/workloadnode"
	. "github.com/pingcap/endless/pkg/workloadnode/tiup"
	"github.com/pingcap/test-infra/sdk/resource"
	"go.uber.org/zap"

	. "github.com/onsi/ginkgo"
	"github.com/pingcap/log"

	_ "github.com/go-sql-driver/mysql"
	_ "github.com/pingcap/test-infra/sdk/resource/impl/k8s" // register k8s impl

	_ "github.com/pingcap/endless/pkg/client/tidb"
)

func STMT_Test(
	mycluster *TiUPCluster,
	testcase string,
) {
	// need sql mode to ""
	tidbtest := ctx.Resource("stmt").(resource.WorkloadNode)
	dbURL := Try(mycluster.ServiceURL(resource.DBAddr)).(*url.URL)
	log.Info("dbDSN info:", zap.String("dbdsn:", dbURL.Host))
	dbDSN := dbURL.Host
	// dbDSN := "tiup-peer:3390"
	cmd := fmt.Sprintf(`set -x;  curl -sL http://minio.pingcap.net:9000/tp-team/tests/stmtflow/tests.tar.gz | tar -xz -C ./; cd tests; stmtflow test %s --diff --block-time=9s --dsn='root:@tcp(%s)/test' >> result.log 2>&1;`, testcase, dbDSN)
	duration := 10 * time.Hour
	ctx2, cancel := context.WithTimeout(ctx, duration)
	defer cancel()
	cmd1 := workloadnode.CommandContext(ctx2, cmd)
	defer cmd1.Stop()
	err := cmd1.Run(tidbtest)
	if err != nil {
		log.Info("tidb test result: ", zap.String("err:", err.Error()))
		Fail("stmt test fail")
	}

}
