Skip to content

Commit fdec500

Browse files
committed
add benchmark for WorkspaceTagDefaultsFromFile
1 parent 0e25e03 commit fdec500

File tree

1 file changed

+61
-2
lines changed

1 file changed

+61
-2
lines changed

provisioner/terraform/tfparse/tfparse_test.go

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ package tfparse_test
33
import (
44
"archive/tar"
55
"bytes"
6+
"context"
7+
"io"
8+
"log"
69
"testing"
710

11+
"cdr.dev/slog"
12+
"cdr.dev/slog/sloggers/sloghuman"
813
"cdr.dev/slog/sloggers/slogtest"
914
"github.com/coder/coder/v2/archive"
1015
"github.com/coder/coder/v2/provisioner/terraform/tfparse"
@@ -326,7 +331,7 @@ func Test_WorkspaceTagDefaultsFromFile(t *testing.T) {
326331
}
327332
}
328333

329-
func createTar(t *testing.T, files map[string]string) []byte {
334+
func createTar(t testing.TB, files map[string]string) []byte {
330335
var buffer bytes.Buffer
331336
writer := tar.NewWriter(&buffer)
332337
for path, content := range files {
@@ -348,10 +353,64 @@ func createTar(t *testing.T, files map[string]string) []byte {
348353
return buffer.Bytes()
349354
}
350355

351-
func createZip(t *testing.T, files map[string]string) []byte {
356+
func createZip(t testing.TB, files map[string]string) []byte {
352357
ta := createTar(t, files)
353358
tr := tar.NewReader(bytes.NewReader(ta))
354359
za, err := archive.CreateZipFromTar(tr, int64(len(ta)))
355360
require.NoError(t, err)
356361
return za
357362
}
363+
364+
func BenchmarkWorkspaceTagDefaultsFromFile(b *testing.B) {
365+
files := map[string]string{
366+
"main.tf": `
367+
provider "foo" {}
368+
resource "foo_bar" "baz" {}
369+
variable "region" {
370+
type = string
371+
default = "us"
372+
}
373+
data "coder_parameter" "az" {
374+
name = "az"
375+
type = "string"
376+
default = "a"
377+
}
378+
data "coder_workspace_tags" "tags" {
379+
tags = {
380+
"platform" = "kubernetes",
381+
"cluster" = "${"devel"}${"opers"}"
382+
"region" = var.region
383+
"az" = data.coder_parameter.az.value
384+
}
385+
}`,
386+
}
387+
tarFile := createTar(b, files)
388+
zipFile := createZip(b, files)
389+
logger := discardLogger(b)
390+
b.ResetTimer()
391+
b.Run("Tar", func(b *testing.B) {
392+
ctx := context.Background()
393+
for i := 0; i < b.N; i++ {
394+
_, err := tfparse.WorkspaceTagDefaultsFromFile(ctx, logger, tarFile, "application/x-tar")
395+
if err != nil {
396+
b.Fatal(err)
397+
}
398+
}
399+
})
400+
401+
b.Run("Zip", func(b *testing.B) {
402+
ctx := context.Background()
403+
for i := 0; i < b.N; i++ {
404+
_, err := tfparse.WorkspaceTagDefaultsFromFile(ctx, logger, zipFile, "application/zip")
405+
if err != nil {
406+
b.Fatal(err)
407+
}
408+
}
409+
})
410+
}
411+
412+
func discardLogger(t testing.TB) slog.Logger {
413+
l := slog.Make(sloghuman.Sink(io.Discard))
414+
log.SetOutput(slog.Stdlib(context.Background(), l, slog.LevelInfo).Writer())
415+
return l
416+
}

0 commit comments

Comments
 (0)