package main

import (
	"flag"
	"os"
	"os/signal"
	"syscall"
	"time"

	"github.com/pingcap/schrodinger-test/util"
	"github.com/pingcap/schrodinger/pkg/test_client"
	"github.com/pingcap/schrodinger/pkg/types"
	"golang.org/x/net/context"
)

var (
	mysqlVersion  string
	dmWorkerCount int
)

func init() {
	flag.StringVar(&mysqlVersion, "mysql-version", "5.6", "mysql version")
	flag.IntVar(&dmWorkerCount, "worker-count", 2, "init worker count")
}

func main() {

	flag.Parse()

	ctx, cancel := context.WithCancel(context.Background())
	cli := client.New(ctx, client.ModeOnline)

	sc := make(chan os.Signal, 1)
	signal.Notify(sc,
		syscall.SIGHUP,
		syscall.SIGINT,
		syscall.SIGTERM,
		syscall.SIGQUIT)
	go func() {
		sig := <-sc
		client.Infof("[binlog] Got signal [%s] to exist.", sig)
		cancel()
		os.Exit(0)
	}()

	master, deploys, err := util.SetUpDM(cli, 3, types.MysqlType, "5.6", "")
	if err != nil {
		client.Fatalf("[dm] setup dm failed %v", err)
	}

	client.Infof("master %s, deploys %+v", master, deploys)

	for {
		time.Sleep(10 * time.Minute)
	}
}
