Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcb2733b

Browse files
committed
The full end-to-end operation works
1 parent0a83477 commitcb2733b

File tree

11 files changed

+248
-27
lines changed

11 files changed

+248
-27
lines changed

‎.vscode/settings.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"coderdtest",
2929
"codersdk",
3030
"drpc",
31+
"drpcconn",
3132
"drpcmux",
3233
"drpcserver",
3334
"goleak",
@@ -44,6 +45,8 @@
4445
"retrier",
4546
"sdkproto",
4647
"stretchr",
48+
"tfexec",
49+
"tfstate",
4750
"unconvert",
4851
"xerrors",
4952
"yamux"

‎coderd/coderdtest/coderdtest.go‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,15 @@ func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
7878
ServeOptions:&provisionersdk.ServeOptions{
7979
Listener:tfServer,
8080
},
81+
Logger:slogtest.Make(t,nil).Named("terraform-provisioner").Leveled(slog.LevelDebug),
8182
})
8283
require.NoError(t,err)
8384
}()
8485

8586
closer:=provisionerd.New(s.Client.ProvisionerDaemonClient,&provisionerd.Options{
86-
Logger:slogtest.Make(t,nil).Named("provisionerd").Leveled(slog.LevelInfo),
87-
PollInterval:50*time.Millisecond,
87+
Logger:slogtest.Make(t,nil).Named("provisionerd").Leveled(slog.LevelInfo),
88+
PollInterval:50*time.Millisecond,
89+
UpdateInterval:50*time.Millisecond,
8890
Provisioners: provisionerd.Provisioners{
8991
string(database.ProvisionerTypeTerraform):proto.NewDRPCProvisionerClient(provisionersdk.Conn(tfClient)),
9092
},
@@ -101,6 +103,7 @@ func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
101103
funcNew(t*testing.T)Server {
102104
// This can be hotswapped for a live database instance.
103105
db:=databasefake.New()
106+
pubsub:=database.NewPubsubInMemory()
104107
ifos.Getenv("DB")!="" {
105108
connectionURL,close,err:=postgres.Open()
106109
require.NoError(t,err)
@@ -113,11 +116,15 @@ func New(t *testing.T) Server {
113116
err=database.Migrate(sqlDB)
114117
require.NoError(t,err)
115118
db=database.New(sqlDB)
119+
120+
pubsub,err=database.NewPubsub(context.Background(),sqlDB,connectionURL)
121+
require.NoError(t,err)
116122
}
117123

118124
handler:=coderd.New(&coderd.Options{
119125
Logger:slogtest.Make(t,nil),
120126
Database:db,
127+
Pubsub:pubsub,
121128
})
122129
srv:=httptest.NewServer(handler)
123130
serverURL,err:=url.Parse(srv.URL)

‎coderd/provisionerdaemons.go‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,10 @@ func (api *api) provisionerDaemonsServe(rw http.ResponseWriter, r *http.Request)
7676
}
7777
mux:=drpcmux.New()
7878
err=proto.DRPCRegisterProvisionerDaemon(mux,&provisionerdServer{
79-
ID:daemon.ID,
80-
Database:api.Database,
81-
Pubsub:api.Pubsub,
79+
ID:daemon.ID,
80+
Database:api.Database,
81+
Pubsub:api.Pubsub,
82+
Provisioners:daemon.Provisioners,
8283
})
8384
iferr!=nil {
8485
_=conn.Close(websocket.StatusInternalError,fmt.Sprintf("drpc register provisioner daemon: %s",err))
@@ -103,9 +104,10 @@ type projectImportJob struct {
103104

104105
// Implementation of the provisioner daemon protobuf server.
105106
typeprovisionerdServerstruct {
106-
ID uuid.UUID
107-
Database database.Store
108-
Pubsub database.Pubsub
107+
ID uuid.UUID
108+
Provisioners []database.ProvisionerType
109+
Database database.Store
110+
Pubsub database.Pubsub
109111
}
110112

111113
// AcquireJob queries the database to lock a job.
@@ -120,7 +122,7 @@ func (server *provisionerdServer) AcquireJob(ctx context.Context, _ *proto.Empty
120122
UUID:server.ID,
121123
Valid:true,
122124
},
123-
Types:[]database.ProvisionerType{database.ProvisionerTypeTerraform},
125+
Types:server.Provisioners,
124126
})
125127
iferrors.Is(err,sql.ErrNoRows) {
126128
// The provisioner daemon assumes no jobs are available if

‎coderd/workspacehistory.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type WorkspaceHistory struct {
2727
ProjectHistoryID uuid.UUID`json:"project_history_id"`
2828
BeforeID uuid.UUID`json:"before_id"`
2929
AfterID uuid.UUID`json:"after_id"`
30+
Namestring`json:"name"`
3031
Transition database.WorkspaceTransition`json:"transition"`
3132
Initiatorstring`json:"initiator"`
3233
ProvisionProvisionerJob`json:"provision"`
@@ -144,7 +145,7 @@ func (api *api) postWorkspaceHistoryByUser(rw http.ResponseWriter, r *http.Reque
144145
}
145146

146147
workspaceHistory,err=db.InsertWorkspaceHistory(r.Context(), database.InsertWorkspaceHistoryParams{
147-
ID:uuid.New(),
148+
ID:workspaceHistoryID,
148149
CreatedAt:database.Now(),
149150
UpdatedAt:database.Now(),
150151
WorkspaceID:workspace.ID,
@@ -242,6 +243,7 @@ func convertWorkspaceHistory(workspaceHistory database.WorkspaceHistory, provisi
242243
ProjectHistoryID:workspaceHistory.ProjectHistoryID,
243244
BeforeID:workspaceHistory.BeforeID.UUID,
244245
AfterID:workspaceHistory.AfterID.UUID,
246+
Name:workspaceHistory.Name,
245247
Transition:workspaceHistory.Transition,
246248
Initiator:workspaceHistory.Initiator,
247249
Provision:convertProvisionerJob(provisionerJob),

‎coderd/workspacehistory_test.go‎

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,18 @@ func TestWorkspaceHistory(t *testing.T) {
3636
setupProjectHistory:=func(t*testing.T,client*codersdk.Client,user coderd.CreateInitialUserRequest,project coderd.Project,filesmap[string]string) coderd.ProjectHistory {
3737
varbuffer bytes.Buffer
3838
writer:=tar.NewWriter(&buffer)
39-
err:=writer.WriteHeader(&tar.Header{
40-
Name:"file",
41-
Size:1<<10,
42-
})
43-
require.NoError(t,err)
44-
_,err=writer.Write(make([]byte,1<<10))
39+
forpath,content:=rangefiles {
40+
err:=writer.WriteHeader(&tar.Header{
41+
Name:path,
42+
Size:int64(len(content)),
43+
})
44+
require.NoError(t,err)
45+
_,err=writer.Write([]byte(content))
46+
require.NoError(t,err)
47+
}
48+
err:=writer.Flush()
4549
require.NoError(t,err)
50+
4651
projectHistory,err:=client.CreateProjectHistory(context.Background(),user.Organization,project.Name, coderd.CreateProjectHistoryRequest{
4752
StorageMethod:database.ProjectStorageMethodInlineArchive,
4853
StorageSource:buffer.Bytes(),
@@ -65,7 +70,9 @@ func TestWorkspaceHistory(t *testing.T) {
6570
history,err:=server.Client.ListWorkspaceHistory(context.Background(),"",workspace.Name)
6671
require.NoError(t,err)
6772
require.Len(t,history,0)
68-
projectVersion:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
73+
projectVersion:=setupProjectHistory(t,server.Client,user,project,map[string]string{
74+
"example":"file",
75+
})
6976
_,err=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
7077
ProjectHistoryID:projectVersion.ID,
7178
Transition:database.WorkspaceTransitionCreate,
@@ -84,7 +91,9 @@ func TestWorkspaceHistory(t *testing.T) {
8491
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
8592
_,err:=server.Client.WorkspaceHistory(context.Background(),"",workspace.Name,"")
8693
require.Error(t,err)
87-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
94+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
95+
"some":"file",
96+
})
8897
_,err=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
8998
ProjectHistoryID:projectHistory.ID,
9099
Transition:database.WorkspaceTransitionCreate,
@@ -100,12 +109,23 @@ func TestWorkspaceHistory(t *testing.T) {
100109
_=server.AddProvisionerd(t)
101110
user:=server.RandomInitialUser(t)
102111
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
103-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
112+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
113+
"main.tf":`resource "null_resource" "example" {}`,
114+
})
104115
_,err:=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
105116
ProjectHistoryID:projectHistory.ID,
106117
Transition:database.WorkspaceTransitionCreate,
107118
})
108119
require.NoError(t,err)
120+
121+
varworkspaceHistory coderd.WorkspaceHistory
122+
require.Eventually(t,func()bool {
123+
workspaceHistory,err=server.Client.WorkspaceHistory(context.Background(),"",workspace.Name,"")
124+
require.NoError(t,err)
125+
returnworkspaceHistory.Provision.Status.Completed()
126+
},5*time.Second,50*time.Millisecond)
127+
require.Equal(t,"",workspaceHistory.Provision.Error)
128+
require.Equal(t,coderd.ProvisionerJobStatusSucceeded,workspaceHistory.Provision.Status)
109129
})
110130

111131
t.Run("CreateHistoryAlreadyInProgress",func(t*testing.T) {
@@ -114,7 +134,9 @@ func TestWorkspaceHistory(t *testing.T) {
114134
_=server.AddProvisionerd(t)
115135
user:=server.RandomInitialUser(t)
116136
project,workspace:=setupProjectAndWorkspace(t,server.Client,user)
117-
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{})
137+
projectHistory:=setupProjectHistory(t,server.Client,user,project,map[string]string{
138+
"some":"content",
139+
})
118140

119141
_,err:=server.Client.CreateWorkspaceHistory(context.Background(),"",workspace.Name, coderd.CreateWorkspaceHistoryRequest{
120142
ProjectHistoryID:projectHistory.ID,

‎codersdk/projects_test.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func TestProjects(t *testing.T) {
7171
require.NoError(t,err)
7272
})
7373

74-
t.Run("UnauthenticatedHistorys",func(t*testing.T) {
74+
t.Run("UnauthenticatedHistory",func(t*testing.T) {
7575
t.Parallel()
7676
server:=coderdtest.New(t)
7777
_,err:=server.Client.ListProjectHistory(context.Background(),"org","project")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp