// fakeRunGithubE2ESuccess imitates jenkins running func fakeRunGithubE2ESuccess(ciStatus *github.CombinedStatus, context1Pass, context2Pass bool) { ciStatus.State = stringPtr("pending") for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == requiredReTestContext1 || *status.Context == requiredReTestContext2 { status.State = stringPtr("pending") } } // short sleep like the test is running time.Sleep(500 * time.Millisecond) if context1Pass && context2Pass { ciStatus.State = stringPtr("success") } foundContext1 := false foundContext2 := false for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == requiredReTestContext1 { setStatus(status, context1Pass) foundContext1 = true } if *status.Context == requiredReTestContext2 { setStatus(status, context2Pass) foundContext2 = true } } if !foundContext1 { addStatus(jenkinsE2EContext, context1Pass, ciStatus) } if !foundContext2 { addStatus(jenkinsUnitContext, context2Pass, ciStatus) } }
// fakeRunGithubE2ESuccess imitates jenkins running func fakeRunGithubE2ESuccess(ciStatus *github.CombinedStatus, e2ePass, unitPass bool) { ciStatus.State = stringPtr("pending") for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == jenkinsE2EContext || *status.Context == jenkinsUnitContext { status.State = stringPtr("pending") } } // short sleep like the test is running time.Sleep(500 * time.Millisecond) ciStatus.State = stringPtr("success") foundE2E := false foundUnit := false for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == jenkinsE2EContext { setStatus(status, e2ePass) foundE2E = true } if *status.Context == jenkinsUnitContext { setStatus(status, unitPass) foundUnit = true } } if !foundE2E { addStatus(jenkinsE2EContext, e2ePass, ciStatus) } if !foundUnit { addStatus(jenkinsUnitContext, unitPass, ciStatus) } }
// fakeRunGithubE2ESuccess imitates the github e2e running, but indicates // success after a short sleep func fakeRunGithubE2ESuccess(ciStatus *github.CombinedStatus, shouldPass bool) { ciStatus.State = stringPtr("pending") for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == gceE2EContext { status.State = stringPtr("pending") break } } // short sleep like the test is running time.Sleep(500 * time.Millisecond) ciStatus.State = stringPtr("success") found := false for id := range ciStatus.Statuses { status := &ciStatus.Statuses[id] if *status.Context == gceE2EContext { if shouldPass { status.State = stringPtr("success") } else { status.State = stringPtr("failure") } found = true break } } if !found { e2eStatus := github.RepoStatus{ Context: stringPtr(gceE2EContext), State: stringPtr("success"), } ciStatus.Statuses = append(ciStatus.Statuses, e2eStatus) } }
func addStatus(context string, success bool, ciStatus *github.CombinedStatus) { status := github.RepoStatus{ Context: stringPtr(context), } setStatus(&status, success) ciStatus.Statuses = append(ciStatus.Statuses, status) }
func updateStatusState(status *github.CombinedStatus) *github.CombinedStatus { prioMap := map[string]int{ "pending": 4, "error": 3, "failure": 2, "success": 1, "": 0, } backMap := map[int]string{ 4: "pending", 3: "error", 2: "failure", 1: "success", 0: "", } sint := 1 for _, s := range status.Statuses { newSint := prioMap[*s.State] if newSint > sint { sint = newSint } } status.State = stringPtr(backMap[sint]) return status }
func failGithubStatus(status github.CombinedStatus) github.CombinedStatus { s := github.RepoStatus{ Context: stringPtr(gceE2EContext), State: stringPtr("failure"), } status.Statuses = append(status.Statuses, s) return updateStatusState(status) }
func claStatus(status github.CombinedStatus) github.CombinedStatus { s := github.RepoStatus{ Context: stringPtr("cla/google"), State: stringPtr("success"), } status.Statuses = append(status.Statuses, s) return updateStatusState(status) }