diff --git a/README.md b/README.md new file mode 100644 index 0000000..0fd6172 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +## Benchmark + +### go benchmark +Start your server +`go run cmd/server/main.go` + +Run your tests +`go test -race -v --bench ./. --benchmem ./benchmark ` diff --git a/benchmark/benchmark_test.go b/benchmark/benchmark_test.go new file mode 100644 index 0000000..cffb62a --- /dev/null +++ b/benchmark/benchmark_test.go @@ -0,0 +1,44 @@ +package benchmark + +import ( + "fmt" + "log" + "os" + "strings" + "testing" + "time" + + go_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/go" + nest_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/nest" + "github.com/stretchr/testify/require" +) + +func TestGoXRequestes(t *testing.T) { + log.SetFlags(log.Lmicroseconds) + logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_"))) + err := os.MkdirAll("./dump", os.ModeTemporary) + require.NoError(t, err) + f, err := os.OpenFile("./dump/"+logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) + require.NoError(t, err) + + defer f.Close() + log.SetOutput(f) + + totalRequests := 1000 + require.NoError(t, go_benchmark.Benchmark(totalRequests)) + require.NoError(t, os.RemoveAll("./temp")) + +} + +func TestNestXRequests(t *testing.T) { + log.SetFlags(log.Lmicroseconds) + logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_"))) + f, err := os.OpenFile("./dump/"+logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) + require.NoError(t, err) + + defer f.Close() + log.SetOutput(f) + + totalRequests := 1000 + require.NoError(t, nest_benchmark.Benchmark(totalRequests)) +} diff --git a/benchmark/main.go b/benchmark/main.go deleted file mode 100644 index 8992309..0000000 --- a/benchmark/main.go +++ /dev/null @@ -1,34 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "strings" - "time" - - // go_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/go" - nest_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/nest" -) - -func main() { - log.SetFlags(log.Lmicroseconds) - logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_"))) - f, err := os.OpenFile("./dump/"+logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) - if err != nil { - log.Fatal(err) - } - - defer f.Close() - log.SetOutput(f) - - totalRequests := 1000 - // totalRequests := 5000 - // if err := go_benchmark.Benchmark(totalRequests); err != nil { - // log.Fatalln("go_benchmark.Benchmark", err) - // } - - if err := nest_benchmark.Benchmark(totalRequests); err != nil { - log.Fatalln("nest_benchmark.Benchmark", err) - } -} diff --git a/go.mod b/go.mod index db4783b..eea485a 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,13 @@ require ( github.com/gofiber/fiber/v2 v2.43.0 github.com/joho/godotenv v1.5.1 github.com/kelseyhightower/envconfig v1.4.0 + github.com/stretchr/testify v1.8.2 go.mongodb.org/mongo-driver v1.11.3 ) require ( github.com/andybalholm/brotli v1.0.5 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/snappy v0.0.1 // indirect github.com/google/uuid v1.3.0 // indirect github.com/jedib0t/go-pretty/v6 v6.4.6 // indirect @@ -23,6 +25,7 @@ require ( github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect github.com/philhofer/fwd v1.1.2 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect @@ -38,4 +41,5 @@ require ( golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ef9eb0a..55be086 100644 --- a/go.sum +++ b/go.sum @@ -56,10 +56,13 @@ github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee h1:8Iv5m6xEo1NR1Avp github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= @@ -140,6 +143,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=