package service

import (
	"os"
	"testing"

	"github.com/tidbcloud/cluster-service-ng/pkg/runtime/storage"
)

func TestServiceCreateCluster(t *testing.T) {
	output := os.Stderr
	svc, err := NewService(storage.NewMemKvStg(), output)
	if err != nil {
		t.Fatal(err)
	}
	err = svc.Start()
	if err != nil {
		t.Fatal(err)
	}

	req := &CreateClusterReq{
		ClusterId: "fake-cluster-id-1",
		TiKVCount: 3,
		TraceId:   "fake-trace-id-1",
	}
	resp, err := svc.CreateCluster(req)
	if err != nil {
		t.Fatal(err)
	}
	resp.Dump("just created dag, might still running", output)

	err = svc.WaitForAllFinish()
	if err != nil {
		t.Fatal(err)
	}
	resp, err = svc.GetCreateClusterStatus(req)
	if err != nil {
		t.Fatal(err)
	}
	resp.Dump("expect done", output)
	if !resp.IsDone {
		t.Fatal("create-cluster should be done now")
	}
}
