let's make it pretty now
parent
0a0a47c2ba
commit
1183f28d3b
|
@ -24,12 +24,14 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"runtime"
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-getter"
|
"github.com/hashicorp/go-getter"
|
||||||
"k8s.io/minikube/pkg/util"
|
"k8s.io/minikube/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
const newPath = "../../out/minikube"
|
const newPath = "../../out/minikube"
|
||||||
|
const cmdTimeout = int64(90 * 1000)
|
||||||
|
|
||||||
// TestStress runs the stress test
|
// TestStress runs the stress test
|
||||||
func TestStress(t *testing.T) {
|
func TestStress(t *testing.T) {
|
||||||
|
@ -47,7 +49,7 @@ func TestStress(t *testing.T) {
|
||||||
|
|
||||||
oldPath := fmt.Sprintf("../../out/minikube-%s", *upgradeFrom)
|
oldPath := fmt.Sprintf("../../out/minikube-%s", *upgradeFrom)
|
||||||
url := util.GetBinaryDownloadURL(*upgradeFrom, runtime.GOOS)
|
url := util.GetBinaryDownloadURL(*upgradeFrom, runtime.GOOS)
|
||||||
t.Log(url)
|
t.Logf("Downloading minikube %s from %s", *upgradeFrom, url)
|
||||||
err = getter.GetFile(oldPath, url)
|
err = getter.GetFile(oldPath, url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed download minikube %s: %v", *upgradeFrom, err)
|
t.Fatalf("failed download minikube %s: %v", *upgradeFrom, err)
|
||||||
|
@ -69,53 +71,48 @@ func runStress(t *testing.T, oldPath string, profile string, i int) {
|
||||||
exec.Command(newPath, "delete", "-p", profile).Run()
|
exec.Command(newPath, "delete", "-p", profile).Run()
|
||||||
|
|
||||||
t.Logf("Hot upgrade from %s to HEAD", *upgradeFrom)
|
t.Logf("Hot upgrade from %s to HEAD", *upgradeFrom)
|
||||||
oldStart := exec.Command(oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
runCommand(t, true, oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
t.Logf(oldStart.String())
|
|
||||||
err := oldStart.Run()
|
|
||||||
if err != nil {
|
|
||||||
t.Logf("old start failed, which is OK: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
newStart := exec.Command(newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
err = newStart.Run()
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("***hot upgrade loop %d FAILED with %s: %v", i, *startArgs, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
delete := exec.Command(newPath, "delete", "-p", profile)
|
runCommand(t, false, newPath, "delete", "-p", profile)
|
||||||
delete.Run()
|
|
||||||
|
|
||||||
t.Logf("Cold upgrade from %s to HEAD", *upgradeFrom)
|
t.Logf("Cold upgrade from %s to HEAD", *upgradeFrom)
|
||||||
oldStart2 := exec.Command(oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
runCommand(t, false, oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
err = oldStart2.Run()
|
|
||||||
if err != nil {
|
|
||||||
t.Logf("old start failed, which is OK: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
oldStop := exec.Command(oldPath, "stop", "-p", profile)
|
runCommand(t, false, oldPath, "stop", "-p", profile)
|
||||||
oldStop.Run()
|
|
||||||
|
|
||||||
err = exec.Command(newPath, "start", "-p", profile, *startArgs, "--alsologtostderr").Run()
|
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
if err != nil {
|
|
||||||
t.Errorf("***cold upgrade loop %d FAILED with %s: %v", i, *startArgs, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
t.Logf("Restart HEAD test")
|
t.Logf("Restart HEAD test")
|
||||||
err = exec.Command(newPath, "start", "-p", profile, *startArgs, "--alsologtostderr").Run()
|
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
if err != nil {
|
|
||||||
t.Errorf("***hot restart loop %d FAILED with %s: %v", i, *startArgs, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
t.Logf("Cold HEAD restart")
|
t.Logf("Cold HEAD restart")
|
||||||
newStop := exec.Command(newPath, "stop", "-p", profile)
|
runCommand(t, false, newPath, "stop", "-p", profile)
|
||||||
newStop.Run()
|
|
||||||
|
|
||||||
err = exec.Command(newPath, "start", "-p", profile, *startArgs, "--alsologtostderr").Run()
|
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
|
||||||
if err != nil {
|
|
||||||
t.Errorf("***cold restart loop %d FAILED with %s: %v", i, *startArgs, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
exec.Command(newPath, "delete", "-p", profile).Run()
|
runCommand(t, false, newPath, "delete", "-p", profile)
|
||||||
|
|
||||||
t.Logf("Loop %d of %d done.", i, *loops)
|
t.Logf("Loop %d of %d done.", i, *loops)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func runCommand(t *testing.T, errorOut bool, mkPath string, args ...string) {
|
||||||
|
c := exec.Command(mkPath, args...)
|
||||||
|
t.Logf("Running: %s, %v", mkPath, args)
|
||||||
|
start := time.Now()
|
||||||
|
out, err := c.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
if errorOut {
|
||||||
|
t.Errorf("Error running %s %v: %v", mkPath, args, err)
|
||||||
|
t.Logf("Command output: %q", out)
|
||||||
|
} else {
|
||||||
|
t.Logf("Error running %s %v: %v", mkPath, args, err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
elapsed := time.Since(start)
|
||||||
|
if elapsed.Milliseconds() > cmdTimeout && errorOut {
|
||||||
|
t.Errorf("Command took too long: %s %v took %f seconds", mkPath, args, elapsed.Seconds())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue