package importer

import (
	"fmt"
	"os"
	"testing"

	"github.com/pingcap/log"
	"go.uber.org/zap"

	"github.com/pingcap-inc/clinic/pkg/db_docker"
	"github.com/pingcap-inc/clinic/pkg/db_docker/db/impl"
	"github.com/pingcap-inc/clinic/pkg/es"
	"github.com/pingcap-inc/clinic/pkg/importer/metrics"
)

var dataPath = "testdata"

func TestMain(m *testing.M) {
	fmt.Println("start tests")
	metrics.StopAllVmDocker()
	es.StopAllESKibanaDocker()
	impl.ReleaseAll()

	_ = db_docker.TryInitDB()

	err := metrics.StartVmDocker()
	if err != nil {
		log.Error("failed to start vm docker", zap.Error(err))
	}

	err = es.StartEsDocker()
	if err != nil {
		log.Error("failed to start es docker", zap.Error(err))
	}
	err = es.StartKibanaDocker()
	if err != nil {
		log.Error("failed to start kibana docker", zap.Error(err))
	}

	code := m.Run()
	metrics.StopAllVmDocker()
	es.StopAllESKibanaDocker()
	impl.ReleaseAll()

	os.Exit(code)
}
