test
This commit is contained in:
parent
13025746e6
commit
75b7b94a50
17
src/helm/helm_test.go
Normal file
17
src/helm/helm_test.go
Normal file
@ -0,0 +1,17 @@
|
||||
package helm
|
||||
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestHelm(t *testing.T) {
|
||||
cmd := HelmCommand{}
|
||||
cmd.New()
|
||||
|
||||
assert.NotNilf(t, cmd.Exec, "TestHelm %s", "New")
|
||||
|
||||
cmd.Exec("pwd")
|
||||
}
|
@ -4,15 +4,11 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"errors"
|
||||
"os/exec"
|
||||
"encoding/json"
|
||||
|
||||
log "oc-deploy/log_wrapper"
|
||||
)
|
||||
|
||||
// type KubeContext struct {
|
||||
// Bin string // Chemin vers le binaire
|
||||
// }
|
||||
|
||||
|
||||
type kubeConfig struct {
|
||||
CurrentContext string `json:"current-context"`
|
||||
@ -43,7 +39,7 @@ type kubeConfigClusters struct {
|
||||
func (this KubectlCommand) GetCurrentContext() (string, error) {
|
||||
bin := this.Bin
|
||||
|
||||
msg := fmt.Sprintf("%s get config current-context", bin)
|
||||
msg := fmt.Sprintf("%s config current-context", bin)
|
||||
log.Log().Debug().Msg(msg)
|
||||
|
||||
cmd_args := strings.Split(msg, " ")
|
||||
@ -56,8 +52,7 @@ func (this KubectlCommand) GetCurrentContext() (string, error) {
|
||||
return res, err
|
||||
}
|
||||
|
||||
// Current Context
|
||||
// namespace, server
|
||||
// currentContext, currentNamespace, currentServer
|
||||
func (this KubectlCommand) GetContext() (string, string, string, error) {
|
||||
|
||||
bin := this.Bin
|
||||
@ -101,9 +96,14 @@ func (this KubectlCommand) GetContext() (string, string, string, error) {
|
||||
|
||||
func (this KubectlCommand) UseContext(newContext string) (error) {
|
||||
|
||||
cmd := exec.Command(this.Bin, "config", "use-context", newContext)
|
||||
stdout, err := cmd.CombinedOutput()
|
||||
bin := this.Bin
|
||||
|
||||
msg := fmt.Sprintf("%s config use-context %s", bin, newContext)
|
||||
log.Log().Debug().Msg(msg)
|
||||
|
||||
cmd_args := strings.Split(msg, " ")
|
||||
cmd := this.Exec(cmd_args[0], cmd_args[1:]...)
|
||||
stdout, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
log.Log().Debug().Msg(string(stdout))
|
||||
return errors.New(string(stdout))
|
||||
|
86
src/kubectl/context_test.go
Normal file
86
src/kubectl/context_test.go
Normal file
@ -0,0 +1,86 @@
|
||||
package kubectl
|
||||
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"errors"
|
||||
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var MOCK_ENABLE = true
|
||||
|
||||
func TestKubectCurrentContext(t *testing.T) {
|
||||
|
||||
cmd := getCmdKubectl(MOCK_ENABLE, "minikube")
|
||||
|
||||
res, err := cmd.GetCurrentContext()
|
||||
|
||||
assert.Nilf(t, err, "error message %s", err)
|
||||
assert.Equal(t, "minikube", res, "TestKubectCurrentContext error")
|
||||
}
|
||||
|
||||
func TestKubectContext(t *testing.T) {
|
||||
|
||||
fileName := filepath.Join(TEST_SRC_DIR, "context.json")
|
||||
cmd_json, _ := os.ReadFile(fileName)
|
||||
|
||||
cmd := getCmdKubectl(MOCK_ENABLE, string(cmd_json))
|
||||
|
||||
currentContext, currentNamespace, currentServer, err := cmd.GetContext()
|
||||
|
||||
assert.Nilf(t, err, "error message %s", err)
|
||||
assert.Equal(t, "minikube", currentContext, "TestKubectContext error")
|
||||
assert.Equal(t, "default", currentNamespace, "TestKubectContext error")
|
||||
assert.Equal(t, "https://127.0.0.1:38039", currentServer, "TestKubectContext error")
|
||||
}
|
||||
|
||||
func TestKubectUseContext(t *testing.T) {
|
||||
|
||||
cmd := getCmdKubectl(MOCK_ENABLE, `Switched to context "minikube".`)
|
||||
|
||||
err := cmd.UseContext("minikube")
|
||||
|
||||
assert.Nilf(t, err, "error message %s", err)
|
||||
}
|
||||
|
||||
func TestKubectUseContextErr(t *testing.T) {
|
||||
|
||||
error := errors.New("exit 1")
|
||||
cmd := getCmdKubectlError(MOCK_ENABLE, `error: no context exists with the name: "minikube2"`, error)
|
||||
|
||||
err := cmd.UseContext("minikube2")
|
||||
|
||||
assert.NotNilf(t, err, "error message %s", err)
|
||||
}
|
||||
|
||||
func TestKubectCheck(t *testing.T) {
|
||||
|
||||
cmd_txt := `
|
||||
Kubernetes control plane is running at https://127.0.0.1:38039
|
||||
CoreDNS is running at https://127.0.0.1:38039/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
|
||||
|
||||
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
|
||||
`
|
||||
// error := errors.New("exit 1")
|
||||
cmd := getCmdKubectl(MOCK_ENABLE, cmd_txt)
|
||||
|
||||
err := cmd.Check()
|
||||
|
||||
assert.Nilf(t, err, "error message %s", err)
|
||||
}
|
||||
|
||||
func TestKubectCheckErr(t *testing.T) {
|
||||
|
||||
cmd_txt := ""
|
||||
|
||||
error := errors.New("exit 1")
|
||||
cmd := getCmdKubectlError(MOCK_ENABLE, cmd_txt, error)
|
||||
|
||||
err := cmd.Check()
|
||||
|
||||
assert.NotNilf(t, err, "error message %s", "TestKubectCheckErr")
|
||||
}
|
17
src/kubectl/kubectl_test.go
Normal file
17
src/kubectl/kubectl_test.go
Normal file
@ -0,0 +1,17 @@
|
||||
package kubectl
|
||||
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestKubectl(t *testing.T) {
|
||||
cmd := KubectlCommand{}
|
||||
cmd.New()
|
||||
|
||||
assert.NotNilf(t, cmd.Exec, "TestKubectl %s", "New")
|
||||
|
||||
cmd.Exec("pwd")
|
||||
}
|
@ -30,15 +30,16 @@ type MockCommandExecutor struct {
|
||||
// Used to stub the return of the Output method
|
||||
// Could add other properties depending on testing needs
|
||||
output string
|
||||
err error
|
||||
}
|
||||
|
||||
// Implements the commandExecutor interface
|
||||
func (m *MockCommandExecutor) Output() ([]byte, error) {
|
||||
return []byte(m.output), nil
|
||||
return []byte(m.output), m.err
|
||||
}
|
||||
|
||||
func (m *MockCommandExecutor) CombinedOutput() ([]byte, error) {
|
||||
return []byte(m.output), nil
|
||||
return []byte(m.output), m.err
|
||||
}
|
||||
|
||||
//
|
||||
@ -74,7 +75,26 @@ func getCmdsKubectl(mock bool, outputs map[string]string) (KubectlCommand) {
|
||||
cmd := KubectlCommand{Bin: "mock", Exec: mock}
|
||||
return cmd
|
||||
} else {
|
||||
bin := filepath.Join(TEST_BIN_DIR, "Kubectl")
|
||||
bin := filepath.Join(TEST_BIN_DIR, "kubectl")
|
||||
os.Chmod(bin, 0700)
|
||||
|
||||
cmd := KubectlCommand{Bin: bin}
|
||||
cmd.New()
|
||||
return cmd
|
||||
}
|
||||
}
|
||||
|
||||
func getCmdKubectlError(mock bool, output string, err error) (KubectlCommand) {
|
||||
if mock == true {
|
||||
|
||||
mock := func(name string, args ...string) commandExecutor {
|
||||
return &MockCommandExecutor{output: output, err: err}
|
||||
}
|
||||
|
||||
cmd := KubectlCommand{Bin: "mock", Exec: mock}
|
||||
return cmd
|
||||
} else {
|
||||
bin := filepath.Join(TEST_BIN_DIR, "kubectl")
|
||||
os.Chmod(bin, 0700)
|
||||
|
||||
cmd := KubectlCommand{Bin: bin}
|
||||
|
@ -3,7 +3,9 @@ package log_wrapper
|
||||
// https://github.com/rs/zerolog/issues/150
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
@ -28,9 +30,11 @@ func Log() *zerolog.Logger {
|
||||
return &mainLogVar
|
||||
}
|
||||
|
||||
func InitLog(serverName string) bool {
|
||||
func InitLog(filename string) bool {
|
||||
|
||||
fAll, _ := os.OpenFile("./" + serverName + ".log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
|
||||
ficlog := filepath.Join(filename + ".log")
|
||||
fAll, _ := os.OpenFile(ficlog, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
|
||||
fmt.Println("ficlog", ficlog)
|
||||
output := zerolog.ConsoleWriter{Out: os.Stdout}
|
||||
|
||||
writerInfo := zerolog.MultiLevelWriter(output)
|
||||
|
21
src/log_wrapper/log_wrapper_test.go
Normal file
21
src/log_wrapper/log_wrapper_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package log_wrapper
|
||||
|
||||
import (
|
||||
// "os"
|
||||
"path/filepath"
|
||||
// "errors"
|
||||
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestLogWrapper(t *testing.T) {
|
||||
ficlog := filepath.Join(TEST_DEST_DIR, "test")
|
||||
InitLog(ficlog)
|
||||
|
||||
Log().Info().Msg("KKK")
|
||||
Log().Error().Msg("KKK")
|
||||
|
||||
assert.FileExists(t, ficlog + ".log", "TestLogWrapper")
|
||||
}
|
21
src/log_wrapper/main_test.go
Normal file
21
src/log_wrapper/main_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package log_wrapper
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var TEST_DEST_DIR = "../wrk_log"
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
folderPath := TEST_DEST_DIR
|
||||
|
||||
os.RemoveAll(folderPath)
|
||||
os.MkdirAll(folderPath, os.ModePerm)
|
||||
|
||||
// call flag.Parse() here if TestMain uses flags
|
||||
exitCode := m.Run()
|
||||
|
||||
os.RemoveAll(folderPath)
|
||||
os.Exit(exitCode)
|
||||
}
|
54
test/kubectl/context.json
Normal file
54
test/kubectl/context.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"kind": "Config",
|
||||
"apiVersion": "v1",
|
||||
"preferences": {},
|
||||
"clusters": [
|
||||
{
|
||||
"name": "minikube",
|
||||
"cluster": {
|
||||
"server": "https://127.0.0.1:38039",
|
||||
"certificate-authority": "/home/admeju/.minikube/ca.crt",
|
||||
"extensions": [
|
||||
{
|
||||
"name": "cluster_info",
|
||||
"extension": {
|
||||
"last-update": "Tue, 10 Sep 2024 10:32:04 UTC",
|
||||
"provider": "minikube.sigs.k8s.io",
|
||||
"version": "v1.33.1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"name": "minikube",
|
||||
"user": {
|
||||
"client-certificate": "/home/admeju/.minikube/profiles/minikube/client.crt",
|
||||
"client-key": "/home/admeju/.minikube/profiles/minikube/client.key"
|
||||
}
|
||||
}
|
||||
],
|
||||
"contexts": [
|
||||
{
|
||||
"name": "minikube",
|
||||
"context": {
|
||||
"cluster": "minikube",
|
||||
"user": "minikube",
|
||||
"namespace": "default",
|
||||
"extensions": [
|
||||
{
|
||||
"name": "context_info",
|
||||
"extension": {
|
||||
"last-update": "Tue, 10 Sep 2024 10:32:04 UTC",
|
||||
"provider": "minikube.sigs.k8s.io",
|
||||
"version": "v1.33.1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"current-context": "minikube"
|
||||
}
|
Loading…
Reference in New Issue
Block a user