Skip to content

Commit d6b2137

Browse files
committed
improve mock runner
1 parent 6950126 commit d6b2137

File tree

2 files changed

+27
-17
lines changed

2 files changed

+27
-17
lines changed

tests/integration/actions_job_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ jobs:
199199
// there is currently not an API for querying a task by ID so we have to list all the tasks
200200
func getTaskJobNameByTaskID(t *testing.T, authToken, repoOwner, repoName string, taskID int64) string {
201201
t.Helper()
202-
// TODO: we may need to query several pages
202+
// FIXME: we may need to query several pages
203203
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/%s/actions/tasks", repoOwner, repoName)).
204204
AddTokenAuth(authToken)
205205
resp := MakeRequest(t, req, http.StatusOK)

tests/integration/actions_runner_test.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"reflect"
1111
"testing"
12+
"time"
1213

1314
auth_model "code.gitea.io/gitea/models/auth"
1415
"code.gitea.io/gitea/modules/setting"
@@ -25,10 +26,8 @@ import (
2526
type mockRunner struct {
2627
client *mockRunnerClient
2728

28-
id int64
29-
uuid string
30-
name string
31-
token string
29+
id int64
30+
name string
3231
}
3332

3433
type mockRunnerClient struct {
@@ -83,10 +82,8 @@ func (r *mockRunner) doRegister(t *testing.T, name, token string, labels []strin
8382
}))
8483
assert.NoError(t, err)
8584
r.id = resp.Msg.Runner.Id
86-
r.uuid = resp.Msg.Runner.Uuid
8785
r.name = resp.Msg.Runner.Name
88-
r.token = resp.Msg.Runner.Token
89-
r.client = newMockRunnerClient(r.uuid, r.token)
86+
r.client = newMockRunnerClient(resp.Msg.Runner.Uuid, resp.Msg.Runner.Token)
9087
}
9188

9289
func (r *mockRunner) registerAsGlobalRunner(t *testing.T, name string, labels []string) {
@@ -101,18 +98,30 @@ func (r *mockRunner) registerAsGlobalRunner(t *testing.T, name string, labels []
10198
r.doRegister(t, name, registrationToken.Token, labels)
10299
}
103100

104-
func (r *mockRunner) fetchTask(t *testing.T) *runnerv1.Task {
105-
resp, err := r.client.runnerServiceClient.FetchTask(context.Background(), connect.NewRequest(&runnerv1.FetchTaskRequest{
106-
TasksVersion: 0,
107-
}))
108-
assert.NoError(t, err)
109-
return resp.Msg.Task
101+
func (r *mockRunner) fetchTask(t *testing.T, timeout ...time.Duration) *runnerv1.Task {
102+
fetchTimeout := 10 * time.Second
103+
if len(timeout) > 0 {
104+
fetchTimeout = timeout[0]
105+
}
106+
ddl := time.Now().Add(fetchTimeout)
107+
for time.Now().Before(ddl) {
108+
resp, err := r.client.runnerServiceClient.FetchTask(context.Background(), connect.NewRequest(&runnerv1.FetchTaskRequest{
109+
TasksVersion: 0,
110+
}))
111+
assert.NoError(t, err)
112+
if resp.Msg.Task != nil {
113+
return resp.Msg.Task
114+
}
115+
time.Sleep(time.Second)
116+
}
117+
return nil
110118
}
111119

112120
type taskExecPolicy struct {
113-
result runnerv1.Result
114-
outputs map[string]string
115-
logRows []*runnerv1.LogRow
121+
result runnerv1.Result
122+
outputs map[string]string
123+
logRows []*runnerv1.LogRow
124+
execTime time.Duration
116125
}
117126

118127
func (r *mockRunner) execTask(t *testing.T, task *runnerv1.Task, policy *taskExecPolicy) {
@@ -139,6 +148,7 @@ func (r *mockRunner) execTask(t *testing.T, task *runnerv1.Task, policy *taskExe
139148
sentOutputs[outputKey] = outputValue
140149
assert.True(t, reflect.DeepEqual(sentOutputs, resp.Msg.SentOutputs))
141150
}
151+
time.Sleep(policy.execTime)
142152
resp, err := r.client.runnerServiceClient.UpdateTask(context.Background(), connect.NewRequest(&runnerv1.UpdateTaskRequest{
143153
State: &runnerv1.TaskState{
144154
Id: task.Id,

0 commit comments

Comments
 (0)