Skip to content

Commit f0b928d

Browse files
committed
Merge branch 'main' into junit
2 parents 1a32a83 + 7a7f664 commit f0b928d

16 files changed

+384
-134
lines changed

.github/workflows/coder.yaml

+16-3
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,31 @@ jobs:
166166
-count=1 -race -parallel=2
167167

168168
- uses: actions/setup-node@v2
169-
if: always()
169+
if: always() && github.actor != 'dependabot[bot]'
170170
with:
171171
node-version: "14"
172172

173+
- name: Cache DataDog CI
174+
if: always() && github.actor != 'dependabot[bot]'
175+
uses: actions/cache@v2
176+
with:
177+
path: ~/.npm
178+
key: datadogci-
179+
restore-keys: datadogci-
180+
173181
- name: Upload DataDog Trace
174-
if: always()
182+
if: always() && github.actor != 'dependabot[bot]'
175183
# See: https://docs.datadoghq.com/continuous_integration/setup_tests/junit_upload/#collecting-environment-configuration-metadata
176184
env:
177185
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
178186
DD_GIT_REPOSITORY_URL: ${{ github.repositoryUrl }}
179-
DD_GIT_BRANCH: ${{ github.base_ref }}
187+
DD_GIT_BRANCH: ${{ github.head_ref }}
180188
DD_GIT_COMMIT_SHA: ${{ github.sha }}
189+
DD_GIT_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
190+
DD_GIT_COMMIT_AUTHOR_NAME: ${{ github.event.head_commit.author.name }}
191+
DD_GIT_COMMIT_AUTHOR_EMAIL: ${{ github.event.head_commit.author.email }}
192+
DD_GIT_COMMIT_COMMITTER_NAME: ${{ github.event.head_commit.committer.name }}
193+
DD_GIT_COMMIT_COMMITTER_EMAIL: ${{ github.event.head_commit.committer.email }}
181194
DD_TAGS: ${{ format('os.platform:{0},os.architecture:{1}', runner.os, runner.arch) }}
182195
run: |
183196
npm install -g @datadog/datadog-ci

coderd/coderdtest/coderdtest.go

+9-11
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"github.com/coder/coder/database"
2121
"github.com/coder/coder/database/databasefake"
2222
"github.com/coder/coder/database/postgres"
23-
"github.com/coder/coder/provisioner/terraform"
23+
"github.com/coder/coder/provisioner/echo"
2424
"github.com/coder/coder/provisionerd"
2525
"github.com/coder/coder/provisionersdk"
2626
"github.com/coder/coder/provisionersdk/proto"
@@ -64,21 +64,19 @@ func (s *Server) RandomInitialUser(t *testing.T) coderd.CreateInitialUserRequest
6464
return req
6565
}
6666

67-
// AddProvisionerd launches a new provisionerd instance!
67+
// AddProvisionerd launches a new provisionerd instance with the
68+
// test provisioner registered.
6869
func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
69-
tfClient, tfServer := provisionersdk.TransportPipe()
70+
echoClient, echoServer := provisionersdk.TransportPipe()
7071
ctx, cancelFunc := context.WithCancel(context.Background())
7172
t.Cleanup(func() {
72-
_ = tfClient.Close()
73-
_ = tfServer.Close()
73+
_ = echoClient.Close()
74+
_ = echoServer.Close()
7475
cancelFunc()
7576
})
7677
go func() {
77-
err := terraform.Serve(ctx, &terraform.ServeOptions{
78-
ServeOptions: &provisionersdk.ServeOptions{
79-
Listener: tfServer,
80-
},
81-
Logger: slogtest.Make(t, nil).Named("terraform-provisioner").Leveled(slog.LevelDebug),
78+
err := echo.Serve(ctx, &provisionersdk.ServeOptions{
79+
Listener: echoServer,
8280
})
8381
require.NoError(t, err)
8482
}()
@@ -88,7 +86,7 @@ func (s *Server) AddProvisionerd(t *testing.T) io.Closer {
8886
PollInterval: 50 * time.Millisecond,
8987
UpdateInterval: 50 * time.Millisecond,
9088
Provisioners: provisionerd.Provisioners{
91-
string(database.ProvisionerTypeTerraform): proto.NewDRPCProvisionerClient(provisionersdk.Conn(tfClient)),
89+
string(database.ProvisionerTypeEcho): proto.NewDRPCProvisionerClient(provisionersdk.Conn(echoClient)),
9290
},
9391
WorkDirectory: t.TempDir(),
9492
})

coderd/projecthistory_test.go

+12-13
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"github.com/coder/coder/coderd"
1212
"github.com/coder/coder/coderd/coderdtest"
1313
"github.com/coder/coder/database"
14+
"github.com/coder/coder/provisioner/echo"
15+
"github.com/coder/coder/provisionersdk/proto"
1416
)
1517

1618
func TestProjectHistory(t *testing.T) {
@@ -22,7 +24,7 @@ func TestProjectHistory(t *testing.T) {
2224
user := server.RandomInitialUser(t)
2325
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
2426
Name: "someproject",
25-
Provisioner: database.ProvisionerTypeTerraform,
27+
Provisioner: database.ProvisionerTypeEcho,
2628
})
2729
require.NoError(t, err)
2830
versions, err := server.Client.ListProjectHistory(context.Background(), user.Organization, project.Name)
@@ -36,21 +38,18 @@ func TestProjectHistory(t *testing.T) {
3638
user := server.RandomInitialUser(t)
3739
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
3840
Name: "someproject",
39-
Provisioner: database.ProvisionerTypeTerraform,
41+
Provisioner: database.ProvisionerTypeEcho,
4042
})
4143
require.NoError(t, err)
42-
var buffer bytes.Buffer
43-
writer := tar.NewWriter(&buffer)
44-
err = writer.WriteHeader(&tar.Header{
45-
Name: "file",
46-
Size: 1 << 10,
47-
})
48-
require.NoError(t, err)
49-
_, err = writer.Write(make([]byte, 1<<10))
44+
data, err := echo.Tar([]*proto.Parse_Response{{
45+
Type: &proto.Parse_Response_Complete{
46+
Complete: &proto.Parse_Complete{},
47+
},
48+
}}, nil)
5049
require.NoError(t, err)
5150
history, err := server.Client.CreateProjectHistory(context.Background(), user.Organization, project.Name, coderd.CreateProjectHistoryRequest{
5251
StorageMethod: database.ProjectStorageMethodInlineArchive,
53-
StorageSource: buffer.Bytes(),
52+
StorageSource: data,
5453
})
5554
require.NoError(t, err)
5655
versions, err := server.Client.ListProjectHistory(context.Background(), user.Organization, project.Name)
@@ -67,7 +66,7 @@ func TestProjectHistory(t *testing.T) {
6766
user := server.RandomInitialUser(t)
6867
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
6968
Name: "someproject",
70-
Provisioner: database.ProvisionerTypeTerraform,
69+
Provisioner: database.ProvisionerTypeEcho,
7170
})
7271
require.NoError(t, err)
7372
var buffer bytes.Buffer
@@ -92,7 +91,7 @@ func TestProjectHistory(t *testing.T) {
9291
user := server.RandomInitialUser(t)
9392
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
9493
Name: "someproject",
95-
Provisioner: database.ProvisionerTypeTerraform,
94+
Provisioner: database.ProvisionerTypeEcho,
9695
})
9796
require.NoError(t, err)
9897
_, err = server.Client.CreateProjectHistory(context.Background(), user.Organization, project.Name, coderd.CreateProjectHistoryRequest{

coderd/projects.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type Project database.Project
2222
// CreateProjectRequest enables callers to create a new Project.
2323
type CreateProjectRequest struct {
2424
Name string `json:"name" validate:"username,required"`
25-
Provisioner database.ProvisionerType `json:"provisioner" validate:"oneof=terraform cdr-basic,required"`
25+
Provisioner database.ProvisionerType `json:"provisioner" validate:"oneof=terraform echo,required"`
2626
}
2727

2828
// Lists all projects the authenticated user has access to.

coderd/projects_test.go

+20-22
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package coderd_test
22

33
import (
4-
"archive/tar"
5-
"bytes"
64
"context"
75
"testing"
86
"time"
@@ -12,6 +10,8 @@ import (
1210
"github.com/coder/coder/coderd"
1311
"github.com/coder/coder/coderd/coderdtest"
1412
"github.com/coder/coder/database"
13+
"github.com/coder/coder/provisioner/echo"
14+
"github.com/coder/coder/provisionersdk/proto"
1515
)
1616

1717
func TestProjects(t *testing.T) {
@@ -23,7 +23,7 @@ func TestProjects(t *testing.T) {
2323
user := server.RandomInitialUser(t)
2424
_, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
2525
Name: "someproject",
26-
Provisioner: database.ProvisionerTypeTerraform,
26+
Provisioner: database.ProvisionerTypeEcho,
2727
})
2828
require.NoError(t, err)
2929
})
@@ -34,12 +34,12 @@ func TestProjects(t *testing.T) {
3434
user := server.RandomInitialUser(t)
3535
_, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
3636
Name: "someproject",
37-
Provisioner: database.ProvisionerTypeTerraform,
37+
Provisioner: database.ProvisionerTypeEcho,
3838
})
3939
require.NoError(t, err)
4040
_, err = server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
4141
Name: "someproject",
42-
Provisioner: database.ProvisionerTypeTerraform,
42+
Provisioner: database.ProvisionerTypeEcho,
4343
})
4444
require.Error(t, err)
4545
})
@@ -59,7 +59,7 @@ func TestProjects(t *testing.T) {
5959
user := server.RandomInitialUser(t)
6060
_, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
6161
Name: "someproject",
62-
Provisioner: database.ProvisionerTypeTerraform,
62+
Provisioner: database.ProvisionerTypeEcho,
6363
})
6464
require.NoError(t, err)
6565
// Ensure global query works.
@@ -89,7 +89,7 @@ func TestProjects(t *testing.T) {
8989
user := server.RandomInitialUser(t)
9090
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
9191
Name: "someproject",
92-
Provisioner: database.ProvisionerTypeTerraform,
92+
Provisioner: database.ProvisionerTypeEcho,
9393
})
9494
require.NoError(t, err)
9595
_, err = server.Client.Project(context.Background(), user.Organization, project.Name)
@@ -102,7 +102,7 @@ func TestProjects(t *testing.T) {
102102
user := server.RandomInitialUser(t)
103103
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
104104
Name: "someproject",
105-
Provisioner: database.ProvisionerTypeTerraform,
105+
Provisioner: database.ProvisionerTypeEcho,
106106
})
107107
require.NoError(t, err)
108108
_, err = server.Client.ProjectParameters(context.Background(), user.Organization, project.Name)
@@ -115,7 +115,7 @@ func TestProjects(t *testing.T) {
115115
user := server.RandomInitialUser(t)
116116
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
117117
Name: "someproject",
118-
Provisioner: database.ProvisionerTypeTerraform,
118+
Provisioner: database.ProvisionerTypeEcho,
119119
})
120120
require.NoError(t, err)
121121
_, err = server.Client.CreateProjectParameter(context.Background(), user.Organization, project.Name, coderd.CreateParameterValueRequest{
@@ -135,24 +135,22 @@ func TestProjects(t *testing.T) {
135135
_ = server.AddProvisionerd(t)
136136
project, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
137137
Name: "someproject",
138-
Provisioner: database.ProvisionerTypeTerraform,
138+
Provisioner: database.ProvisionerTypeEcho,
139139
})
140140
require.NoError(t, err)
141-
var buffer bytes.Buffer
142-
writer := tar.NewWriter(&buffer)
143-
content := `variable "example" {
144-
default = "hi"
145-
}`
146-
err = writer.WriteHeader(&tar.Header{
147-
Name: "main.tf",
148-
Size: int64(len(content)),
149-
})
150-
require.NoError(t, err)
151-
_, err = writer.Write([]byte(content))
141+
data, err := echo.Tar([]*proto.Parse_Response{{
142+
Type: &proto.Parse_Response_Complete{
143+
Complete: &proto.Parse_Complete{
144+
ParameterSchemas: []*proto.ParameterSchema{{
145+
Name: "example",
146+
}},
147+
},
148+
},
149+
}}, nil)
152150
require.NoError(t, err)
153151
history, err := server.Client.CreateProjectHistory(context.Background(), user.Organization, project.Name, coderd.CreateProjectHistoryRequest{
154152
StorageMethod: database.ProjectStorageMethodInlineArchive,
155-
StorageSource: buffer.Bytes(),
153+
StorageSource: data,
156154
})
157155
require.NoError(t, err)
158156
require.Eventually(t, func() bool {

coderd/provisionerdaemons.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (api *api) provisionerDaemonsServe(rw http.ResponseWriter, r *http.Request)
6565
ID: uuid.New(),
6666
CreatedAt: database.Now(),
6767
Name: namesgenerator.GetRandomName(1),
68-
Provisioners: []database.ProvisionerType{database.ProvisionerTypeCdrBasic, database.ProvisionerTypeTerraform},
68+
Provisioners: []database.ProvisionerType{database.ProvisionerTypeEcho, database.ProvisionerTypeTerraform},
6969
})
7070
if err != nil {
7171
_ = conn.Close(websocket.StatusInternalError, fmt.Sprintf("insert provisioner daemon:% s", err))

coderd/workspacehistory_test.go

+18-33
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package coderd_test
22

33
import (
4-
"archive/tar"
5-
"bytes"
64
"context"
75
"testing"
86
"time"
@@ -14,6 +12,7 @@ import (
1412
"github.com/coder/coder/coderd/coderdtest"
1513
"github.com/coder/coder/codersdk"
1614
"github.com/coder/coder/database"
15+
"github.com/coder/coder/provisioner/echo"
1716
)
1817

1918
func TestWorkspaceHistory(t *testing.T) {
@@ -22,7 +21,7 @@ func TestWorkspaceHistory(t *testing.T) {
2221
setupProjectAndWorkspace := func(t *testing.T, client *codersdk.Client, user coderd.CreateInitialUserRequest) (coderd.Project, coderd.Workspace) {
2322
project, err := client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
2423
Name: "banana",
25-
Provisioner: database.ProvisionerTypeTerraform,
24+
Provisioner: database.ProvisionerTypeEcho,
2625
})
2726
require.NoError(t, err)
2827
workspace, err := client.CreateWorkspace(context.Background(), "", coderd.CreateWorkspaceRequest{
@@ -33,24 +32,10 @@ func TestWorkspaceHistory(t *testing.T) {
3332
return project, workspace
3433
}
3534

36-
setupProjectHistory := func(t *testing.T, client *codersdk.Client, user coderd.CreateInitialUserRequest, project coderd.Project, files map[string]string) coderd.ProjectHistory {
37-
var buffer bytes.Buffer
38-
writer := tar.NewWriter(&buffer)
39-
for path, content := range files {
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()
49-
require.NoError(t, err)
50-
35+
setupProjectHistory := func(t *testing.T, client *codersdk.Client, user coderd.CreateInitialUserRequest, project coderd.Project, data []byte) coderd.ProjectHistory {
5136
projectHistory, err := client.CreateProjectHistory(context.Background(), user.Organization, project.Name, coderd.CreateProjectHistoryRequest{
5237
StorageMethod: database.ProjectStorageMethodInlineArchive,
53-
StorageSource: buffer.Bytes(),
38+
StorageSource: data,
5439
})
5540
require.NoError(t, err)
5641
require.Eventually(t, func() bool {
@@ -71,9 +56,9 @@ func TestWorkspaceHistory(t *testing.T) {
7156
history, err := server.Client.ListWorkspaceHistory(context.Background(), "", workspace.Name)
7257
require.NoError(t, err)
7358
require.Len(t, history, 0)
74-
projectVersion := setupProjectHistory(t, server.Client, user, project, map[string]string{
75-
"example": "file",
76-
})
59+
data, err := echo.Tar(echo.ParseComplete, echo.ProvisionComplete)
60+
require.NoError(t, err)
61+
projectVersion := setupProjectHistory(t, server.Client, user, project, data)
7762
_, err = server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
7863
ProjectHistoryID: projectVersion.ID,
7964
Transition: database.WorkspaceTransitionCreate,
@@ -92,9 +77,9 @@ func TestWorkspaceHistory(t *testing.T) {
9277
project, workspace := setupProjectAndWorkspace(t, server.Client, user)
9378
_, err := server.Client.WorkspaceHistory(context.Background(), "", workspace.Name, "")
9479
require.Error(t, err)
95-
projectHistory := setupProjectHistory(t, server.Client, user, project, map[string]string{
96-
"some": "file",
97-
})
80+
data, err := echo.Tar(echo.ParseComplete, echo.ProvisionComplete)
81+
require.NoError(t, err)
82+
projectHistory := setupProjectHistory(t, server.Client, user, project, data)
9883
_, err = server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
9984
ProjectHistoryID: projectHistory.ID,
10085
Transition: database.WorkspaceTransitionCreate,
@@ -110,10 +95,10 @@ func TestWorkspaceHistory(t *testing.T) {
11095
user := server.RandomInitialUser(t)
11196
_ = server.AddProvisionerd(t)
11297
project, workspace := setupProjectAndWorkspace(t, server.Client, user)
113-
projectHistory := setupProjectHistory(t, server.Client, user, project, map[string]string{
114-
"main.tf": `resource "null_resource" "example" {}`,
115-
})
116-
_, err := server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
98+
data, err := echo.Tar(echo.ParseComplete, echo.ProvisionComplete)
99+
require.NoError(t, err)
100+
projectHistory := setupProjectHistory(t, server.Client, user, project, data)
101+
_, err = server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
117102
ProjectHistoryID: projectHistory.ID,
118103
Transition: database.WorkspaceTransitionCreate,
119104
})
@@ -135,11 +120,11 @@ func TestWorkspaceHistory(t *testing.T) {
135120
user := server.RandomInitialUser(t)
136121
_ = server.AddProvisionerd(t)
137122
project, workspace := setupProjectAndWorkspace(t, server.Client, user)
138-
projectHistory := setupProjectHistory(t, server.Client, user, project, map[string]string{
139-
"some": "content",
140-
})
123+
data, err := echo.Tar(echo.ParseComplete, echo.ProvisionComplete)
124+
require.NoError(t, err)
125+
projectHistory := setupProjectHistory(t, server.Client, user, project, data)
141126

142-
_, err := server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
127+
_, err = server.Client.CreateWorkspaceHistory(context.Background(), "", workspace.Name, coderd.CreateWorkspaceHistoryRequest{
143128
ProjectHistoryID: projectHistory.ID,
144129
Transition: database.WorkspaceTransitionCreate,
145130
})

0 commit comments

Comments
 (0)