Fix flaky e2e tests because of no idle runners
at startup.
This commit is contained in:
@@ -94,6 +94,7 @@ func initNomad() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
createDefaultEnvironment()
|
createDefaultEnvironment()
|
||||||
|
waitForDefaultEnvironment()
|
||||||
}
|
}
|
||||||
|
|
||||||
func createDefaultEnvironment() {
|
func createDefaultEnvironment() {
|
||||||
@@ -123,6 +124,28 @@ func createDefaultEnvironment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func waitForDefaultEnvironment() {
|
||||||
|
path := helpers.BuildURL(api.BasePath, api.RunnersPath)
|
||||||
|
body := &dto.RunnerRequest{
|
||||||
|
ExecutionEnvironmentID: tests.DefaultEnvironmentIDAsInteger,
|
||||||
|
InactivityTimeout: 1,
|
||||||
|
}
|
||||||
|
var code int
|
||||||
|
const maxRetries = 60
|
||||||
|
for count := 0; count < maxRetries && code != http.StatusOK; count++ {
|
||||||
|
<-time.After(time.Second)
|
||||||
|
if resp, err := helpers.HTTPPostJSON(path, body); err == nil {
|
||||||
|
code = resp.StatusCode
|
||||||
|
log.WithField("count", count).WithField("statusCode", code).Info("Waiting for idle runners")
|
||||||
|
} else {
|
||||||
|
log.WithField("count", count).WithError(err).Warn("Waiting for idle runners")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if code != http.StatusOK {
|
||||||
|
log.Fatal("Failed to provide a runner")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func deleteE2EEnvironments() {
|
func deleteE2EEnvironments() {
|
||||||
for _, id := range environmentIDs {
|
for _, id := range environmentIDs {
|
||||||
deleteEnvironment(&testing.T{}, id.ToString())
|
deleteEnvironment(&testing.T{}, id.ToString())
|
||||||
|
@@ -180,6 +180,26 @@ func HTTPPutJSON(url string, body interface{}) (response *http.Response, err err
|
|||||||
return HTTPPut(url, reader)
|
return HTTPPut(url, reader)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func HTTPPostJSON(url string, body interface{}) (response *http.Response, err error) {
|
||||||
|
requestByteString, err := json.Marshal(body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("cannot marshal passed http post body: %w", err)
|
||||||
|
}
|
||||||
|
bodyReader := bytes.NewReader(requestByteString)
|
||||||
|
|
||||||
|
//nolint:noctx // we don't need a http.NewRequestWithContext in our tests
|
||||||
|
req, err := httpRequest(http.MethodPost, url, bodyReader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error executing request: %w", err)
|
||||||
|
}
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
const templateJobPriority = 100
|
const templateJobPriority = 100
|
||||||
|
|
||||||
func CreateTemplateJob() (base, job *nomadApi.Job) {
|
func CreateTemplateJob() (base, job *nomadApi.Job) {
|
||||||
|
Reference in New Issue
Block a user