(t *testing.T)
| 25 | ) |
| 26 | |
| 27 | func TestBatchUpdateAppHealths(t *testing.T) { |
| 28 | t.Parallel() |
| 29 | |
| 30 | var ( |
| 31 | agent = database.WorkspaceAgent{ |
| 32 | ID: uuid.New(), |
| 33 | } |
| 34 | app1 = database.WorkspaceApp{ |
| 35 | ID: uuid.New(), |
| 36 | AgentID: agent.ID, |
| 37 | Slug: "code-server-1", |
| 38 | DisplayName: "code-server 1", |
| 39 | HealthcheckUrl: "http://localhost:3000", |
| 40 | Health: database.WorkspaceAppHealthInitializing, |
| 41 | OpenIn: database.WorkspaceAppOpenInSlimWindow, |
| 42 | } |
| 43 | app2 = database.WorkspaceApp{ |
| 44 | ID: uuid.New(), |
| 45 | AgentID: agent.ID, |
| 46 | Slug: "code-server-2", |
| 47 | DisplayName: "code-server 2", |
| 48 | HealthcheckUrl: "http://localhost:3001", |
| 49 | Health: database.WorkspaceAppHealthHealthy, |
| 50 | OpenIn: database.WorkspaceAppOpenInSlimWindow, |
| 51 | } |
| 52 | ) |
| 53 | |
| 54 | t.Run("OK", func(t *testing.T) { |
| 55 | t.Parallel() |
| 56 | |
| 57 | dbM := dbmock.NewMockStore(gomock.NewController(t)) |
| 58 | dbM.EXPECT().GetWorkspaceAppsByAgentID(gomock.Any(), agent.ID).Return([]database.WorkspaceApp{app1, app2}, nil) |
| 59 | dbM.EXPECT().UpdateWorkspaceAppHealthByID(gomock.Any(), database.UpdateWorkspaceAppHealthByIDParams{ |
| 60 | ID: app1.ID, |
| 61 | Health: database.WorkspaceAppHealthHealthy, |
| 62 | }).Return(nil) |
| 63 | dbM.EXPECT().UpdateWorkspaceAppHealthByID(gomock.Any(), database.UpdateWorkspaceAppHealthByIDParams{ |
| 64 | ID: app2.ID, |
| 65 | Health: database.WorkspaceAppHealthUnhealthy, |
| 66 | }).Return(nil) |
| 67 | |
| 68 | publishCalled := false |
| 69 | api := &agentapi.AppsAPI{ |
| 70 | AgentID: agent.ID, |
| 71 | Database: dbM, |
| 72 | Log: testutil.Logger(t), |
| 73 | PublishWorkspaceUpdateFn: func(ctx context.Context, _ uuid.UUID, kind wspubsub.WorkspaceEventKind) error { |
| 74 | publishCalled = true |
| 75 | return nil |
| 76 | }, |
| 77 | } |
| 78 | |
| 79 | // Set one to healthy, set another to unhealthy. |
| 80 | resp, err := api.BatchUpdateAppHealths(context.Background(), &agentproto.BatchUpdateAppHealthRequest{ |
| 81 | Updates: []*agentproto.BatchUpdateAppHealthRequest_HealthUpdate{ |
| 82 | { |
| 83 | Id: app1.ID[:], |
| 84 | Health: agentproto.AppHealth_HEALTHY, |
nothing calls this directly
no test coverage detected