kaspad/stability-tests/common/run-kaspad.go
2023-08-23 15:18:10 +09:00

55 lines
1.1 KiB
Go

package common
import (
"fmt"
"os"
"sync/atomic"
"syscall"
"testing"
"github.com/c4ei/YunSeokYeol/domain/dagconfig"
)
// RunKaspadForTesting runs kaspad for testing purposes
func RunKaspadForTesting(t *testing.T, testName string, rpcAddress string) func() {
appDir, err := TempDir(testName)
if err != nil {
t.Fatalf("TempDir: %s", err)
}
kaspadRunCommand, err := StartCmd("KASPAD",
"kaspad",
NetworkCliArgumentFromNetParams(&dagconfig.DevnetParams),
"--appdir", appDir,
"--rpclisten", rpcAddress,
"--loglevel", "debug",
)
if err != nil {
t.Fatalf("StartCmd: %s", err)
}
t.Logf("Kaspad started with --appdir=%s", appDir)
isShutdown := uint64(0)
go func() {
err := kaspadRunCommand.Wait()
if err != nil {
if atomic.LoadUint64(&isShutdown) == 0 {
panic(fmt.Sprintf("Kaspad closed unexpectedly: %s. See logs at: %s", err, appDir))
}
}
}()
return func() {
err := kaspadRunCommand.Process.Signal(syscall.SIGTERM)
if err != nil {
t.Fatalf("Signal: %s", err)
}
err = os.RemoveAll(appDir)
if err != nil {
t.Fatalf("RemoveAll: %s", err)
}
atomic.StoreUint64(&isShutdown, 1)
t.Logf("Kaspad stopped")
}
}