实现预分配 RunnerService facade
This commit is contained in:
@@ -55,6 +55,16 @@ func (c *Client) FetchTask(ctx context.Context, tasksVersion int64) (*runnerv1.F
|
||||
return response.Msg, nil
|
||||
}
|
||||
|
||||
// UpdateTask forwards executor state through the scheduler runner identity.
|
||||
func (c *Client) UpdateTask(ctx context.Context, request *connect.Request[runnerv1.UpdateTaskRequest]) (*connect.Response[runnerv1.UpdateTaskResponse], error) {
|
||||
return c.runner.UpdateTask(ctx, request)
|
||||
}
|
||||
|
||||
// UpdateLog forwards executor log rows through the scheduler runner identity.
|
||||
func (c *Client) UpdateLog(ctx context.Context, request *connect.Request[runnerv1.UpdateLogRequest]) (*connect.Response[runnerv1.UpdateLogResponse], error) {
|
||||
return c.runner.UpdateLog(ctx, request)
|
||||
}
|
||||
|
||||
// DefaultHTTPClient is suitable for the scheduler's long-lived connection.
|
||||
func DefaultHTTPClient() *http.Client {
|
||||
return &http.Client{Transport: http.DefaultTransport}
|
||||
|
||||
@@ -18,6 +18,8 @@ type runnerService struct {
|
||||
t *testing.T
|
||||
declaredLabels []string
|
||||
fetchedVersion int64
|
||||
updatedTask int64
|
||||
updatedLog int64
|
||||
expectedUUID string
|
||||
expectedToken string
|
||||
}
|
||||
@@ -47,6 +49,18 @@ func (s *runnerService) FetchTask(_ context.Context, request *connect.Request[ru
|
||||
}), nil
|
||||
}
|
||||
|
||||
func (s *runnerService) UpdateTask(_ context.Context, request *connect.Request[runnerv1.UpdateTaskRequest]) (*connect.Response[runnerv1.UpdateTaskResponse], error) {
|
||||
s.checkAuth(request)
|
||||
s.updatedTask = request.Msg.GetState().GetId()
|
||||
return connect.NewResponse(&runnerv1.UpdateTaskResponse{State: request.Msg.State}), nil
|
||||
}
|
||||
|
||||
func (s *runnerService) UpdateLog(_ context.Context, request *connect.Request[runnerv1.UpdateLogRequest]) (*connect.Response[runnerv1.UpdateLogResponse], error) {
|
||||
s.checkAuth(request)
|
||||
s.updatedLog = request.Msg.GetTaskId()
|
||||
return connect.NewResponse(&runnerv1.UpdateLogResponse{}), nil
|
||||
}
|
||||
|
||||
func TestClientUsesOfficialRunnerProtocol(t *testing.T) {
|
||||
service := &runnerService{
|
||||
t: t,
|
||||
@@ -75,4 +89,13 @@ func TestClientUsesOfficialRunnerProtocol(t *testing.T) {
|
||||
if service.fetchedVersion != 7 || response.GetTasksVersion() != 8 || response.GetTask().GetId() != 42 {
|
||||
t.Fatalf("unexpected FetchTask exchange: request=%d response=%v", service.fetchedVersion, response)
|
||||
}
|
||||
if _, err := client.UpdateTask(context.Background(), connect.NewRequest(&runnerv1.UpdateTaskRequest{State: &runnerv1.TaskState{Id: 42}})); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := client.UpdateLog(context.Background(), connect.NewRequest(&runnerv1.UpdateLogRequest{TaskId: 42})); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if service.updatedTask != 42 || service.updatedLog != 42 {
|
||||
t.Fatalf("updated task=%d log=%d", service.updatedTask, service.updatedLog)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user