package host

import (
	"strconv"

	"github.com/pingcap/errors"
	"github.com/pingcap/test-infra/sdk/resource"
)

type TiKVHost struct {
	resource.TiDBCluster
	Peer int
}

// GetTotalMemory get tikv node total memory bytes
func (h *TiKVHost) GetTotalMemory() (int, error) {
	stdout, stderr, _, err := h.Exec(resource.TiDBClusterExecOptions{Target: resource.TiKV,
		Command: "cat /sys/fs/cgroup/memory/memory.limit_in_bytes",
		Peer:    h.Peer})
	if err != nil {
		return 0, errors.Wrap(err, "get total memory failed")
	}
	if stderr != "" {
		return 0, errors.New("get total memory failed: " + stderr)
	}
	return strconv.Atoi(stdout)
}
