kubekey/pkg/executor/executor_test.go
liujian 2b8ea3eb46
feat: test variable store in memory (#2666)
Signed-off-by: joyceliu <joyceliu@yunify.com>
2025-07-23 11:25:08 +08:00

48 lines
1.4 KiB
Go

package executor
import (
"context"
"os"
kkcorev1 "github.com/kubesphere/kubekey/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
_const "github.com/kubesphere/kubekey/v4/pkg/const"
"github.com/kubesphere/kubekey/v4/pkg/variable"
"github.com/kubesphere/kubekey/v4/pkg/variable/source"
)
// newTestOption creates a new test option struct for the given hosts.
// It sets up a fake client and playbook using the provided hosts, and initializes the variable subsystem
// with a memory-backed source. This is intended for use in unit tests.
func newTestOption(hosts []string) (*option, error) {
var err error
// Convert the slice of hostnames to an InventoryHost map (not strictly needed here, but kept for clarity).
inventoryHost := make(kkcorev1.InventoryHost)
for _, h := range hosts {
inventoryHost[h] = runtime.RawExtension{}
}
// Create a fake client and playbook for testing.
client, playbook, err := _const.NewTestPlaybook(hosts)
if err != nil {
return nil, err
}
// Initialize the option struct with the fake client, playbook, and standard output for logging.
o := &option{
client: client,
playbook: playbook,
logOutput: os.Stdout,
}
// Initialize the variable subsystem using the memory-backed source.
o.variable, err = variable.New(context.TODO(), o.client, *o.playbook, source.MemorySource)
if err != nil {
return nil, err
}
return o, nil
}