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 (
2526type 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
3433type 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
9289func (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
112120type 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
118127func (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