实现预分配 RunnerService facade

This commit is contained in:
2026-09-20 19:51:32 +00:00
parent b77245e4b9
commit 5fdd39f7ff
9 changed files with 481 additions and 7 deletions
+10
View File
@@ -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}
+23
View File
@@ -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)
}
}