mirror of https://github.com/helm/helm
parent
39897eaf89
commit
60bce48631
@ -0,0 +1,75 @@
|
|||||||
|
package e2e
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type HelmContext struct {
|
||||||
|
t *testing.T
|
||||||
|
Path string
|
||||||
|
Host string
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewHelmContext(t *testing.T) *HelmContext {
|
||||||
|
return &HelmContext{
|
||||||
|
t: t,
|
||||||
|
Path: RepoRoot() + "/bin/helm",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *HelmContext) Run(args ...string) *HelmCmd {
|
||||||
|
cmd := h.newCmd()
|
||||||
|
if status := cmd.exec(args...); status != nil {
|
||||||
|
h.t.Fatalf("helm %v failed unexpectedly: %v", args, status)
|
||||||
|
}
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *HelmContext) newCmd() *HelmCmd {
|
||||||
|
return &HelmCmd{
|
||||||
|
ctx: h,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelmCmd struct {
|
||||||
|
ctx *HelmContext
|
||||||
|
path string
|
||||||
|
ran bool
|
||||||
|
stdout, stderr bytes.Buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *HelmCmd) exec(args ...string) error {
|
||||||
|
cmd := exec.Command(h.ctx.Path, args...)
|
||||||
|
h.stdout.Reset()
|
||||||
|
h.stderr.Reset()
|
||||||
|
cmd.Stdout = &h.stdout
|
||||||
|
cmd.Stderr = &h.stderr
|
||||||
|
status := cmd.Run()
|
||||||
|
h.ran = true
|
||||||
|
return status
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stdout returns standard output of the helmCmd run as a string.
|
||||||
|
func (h *HelmCmd) Stdout() string {
|
||||||
|
if !h.ran {
|
||||||
|
h.ctx.t.Fatal("internal testsuite error: stdout called before run")
|
||||||
|
}
|
||||||
|
return h.stdout.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stderr returns standard error of the helmCmd run as a string.
|
||||||
|
func (h *HelmCmd) Stderr() string {
|
||||||
|
if !h.ran {
|
||||||
|
h.ctx.t.Fatal("internal testsuite error: stdout called before run")
|
||||||
|
}
|
||||||
|
return h.stderr.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func RepoRoot() string {
|
||||||
|
return filepath.Clean(filepath.Join(path.Base(os.Args[0]), "../../.."))
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package e2e
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestHelm(t *testing.T) {
|
||||||
|
if !kubeRunning() {
|
||||||
|
t.Fatal("Not connected to kubernetes")
|
||||||
|
}
|
||||||
|
|
||||||
|
helm := NewHelmContext(t)
|
||||||
|
if !helmRunning(helm) {
|
||||||
|
t.Fatal("Helm is not installed")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup helm host
|
||||||
|
|
||||||
|
// Run deploy
|
||||||
|
|
||||||
|
// Test deployment
|
||||||
|
}
|
||||||
|
|
||||||
|
func helmRunning(h *HelmContext) bool {
|
||||||
|
out := h.Run("server", "status").Stdout()
|
||||||
|
return strings.Count(out, "Running") == 5
|
||||||
|
}
|
||||||
|
|
||||||
|
func kubeRunning() bool {
|
||||||
|
_, err := exec.Command("kubectl", "cluster-info").CombinedOutput()
|
||||||
|
return err == nil
|
||||||
|
}
|
Loading…
Reference in new issue