package tidbclusterlocal

import (
	"os"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"

	"github.com/pingcap/test-infra/sdk/core"
	"github.com/pingcap/test-infra/sdk/e2etest/framework"
	"github.com/pingcap/test-infra/sdk/resource"
	_ "github.com/pingcap/test-infra/sdk/resource/impl/local"
)

var (
	suiteTestCtx core.TestContext
)

var _ = Describe("TiDBCluster Local", func() {
	suiteTestCtx, err := core.BuildContext()
	if err != nil {
		panic("Init test context failed.")
	}
	BeforeEach(func() {
		os.Setenv("TI_PARAM_RES_tc1", `{"provider":"github.com/pingcap/test-infra/sdk/resource/impl/local.TiDBCluster", "name": "tc1","type":"TIDB_CLUSTER","ready":true}`)
		os.Setenv("TI_PARAM_RES_tc1_TIDB_URL", `["mysql://root:@127.0.0.1:4000"]`)
		os.Setenv("TI_PARAM_RES_tc1_TIKV_URL", `["http://127.0.0.1:20160"]`)
		os.Setenv("TI_PARAM_RES_tc1_PD_URL", `["http://127.0.0.1:2379"]`)
		os.Setenv("TI_PARAM_RES_tc1_TIFLASH_URL", `["127.0.0.1:3930"]`)
		os.Setenv("TI_PARAM_RES_tc1_PROMETHEUS_URL", `["http://127.0.0.1:9090"]`)
	})
	AfterEach(func() {
		os.Unsetenv("TI_PARAM_RES_tc1")
		os.Unsetenv("TI_PARAM_RES_tc1_TIDB_URL")
		os.Unsetenv("TI_PARAM_RES_tc1_TIKV_URL")
		os.Unsetenv("TI_PARAM_RES_tc1_PD_URL")
		os.Unsetenv("TI_PARAM_RES_tc1_TIFLASH_URL")
		os.Unsetenv("TI_PARAM_RES_tc1_PROMETHEUS_URL")
	})

	Context("TiDBCluster Local", func() {
		PIt("TiDBCluster Local.GetDB", func() {
			ctx := suiteTestCtx
			tc1 := ctx.Resource("tc1").(resource.TiDBCluster)
			Expect(tc1.Handle().Name).Should(Equal("tc1"))
			u, _ := tc1.ServiceURL(resource.DBAddr)
			Expect(u.Host).Should(Equal("127.0.0.1:4000"))

			_, err := tc1.GetDB("test")
			framework.ExpectNoError(err)
		})
	})

})
