make stress tests look more like integration tests

pull/10176/head
Sharif Elgamal 2021-01-20 12:49:03 -08:00
parent 84c9de898a
commit e74ea8082a
2 changed files with 31 additions and 8 deletions

View File

@ -848,4 +848,4 @@ endif
.PHONY: stress
stress:
go test -test.v -test.timeout=2h ./test/stress -loops=10
go test -test.v -test.timeout=2h ./test/stress -loops=10 | tee "./out/testout_$(COMMIT_SHORT).txt"

View File

@ -65,39 +65,62 @@ func TestStress(t *testing.T) {
for i := 1; i <= *loops; i++ {
t.Logf("Loop %d of %d: %s to HEAD", i, *loops, *upgradeFrom)
runStress(t, oldPath, profile, i)
t.Logf("Loop %d of %d done.", i, *loops)
}
}
type stressFunc func(*testing.T, string, string, int)
// This run the guts of the actual test
func runStress(t *testing.T, oldPath string, profile string, i int) {
func runStress(t *testing.T, oldPath string, profile string, loop int) {
// Cleanup old runs
runCommand(t, false, newPath, "delete", "-p", profile)
t.Run("stress", func(t *testing.T) {
tests := []struct {
name string
validator stressFunc
}{
{"HotOldToNewUpgrade", validHotOldToNewUpgrade},
{"ColdOldToNewUpgrade", validColdOldToNewUpgrade},
{"HotHeadRestart", validHotHeadRestart},
{"ColdHeadRestart", validColdHeadRestart},
}
for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) {
tc.validator(t, oldPath, profile, loop)
})
}
})
}
func validHotOldToNewUpgrade(t *testing.T, oldPath string, profile string, i int) {
t.Logf("Hot upgrade from %s to HEAD", *upgradeFrom)
runCommand(t, true, oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
runCommand(t, false, newPath, "delete", "-p", profile)
}
func validColdOldToNewUpgrade(t *testing.T, oldPath string, profile string, i int) {
t.Logf("Cold upgrade from %s to HEAD", *upgradeFrom)
runCommand(t, false, oldPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
runCommand(t, false, oldPath, "stop", "-p", profile)
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
}
func validHotHeadRestart(t *testing.T, oldPath string, profile string, i int) {
t.Logf("Restart HEAD test")
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
}
func validColdHeadRestart(t *testing.T, oldPath string, profile string, i int) {
t.Logf("Cold HEAD restart")
runCommand(t, false, newPath, "stop", "-p", profile)
runCommand(t, true, newPath, "start", "-p", profile, *startArgs, "--alsologtostderr")
runCommand(t, false, newPath, "delete", "-p", profile)
t.Logf("Loop %d of %d done.", i, *loops)
}
func runCommand(t *testing.T, errorOut bool, mkPath string, args ...string) {