Watch
1
0
Fork
You've already forked pkg-proxy
1
mirror of https://github.com/git-pkgs/proxy.git synced 2026-11-11 16:49:17 -05:00
pkg-proxy/internal/handler/npm_rewrite_bench_test.go
2026-10-18 17:59:14 +01:00

61 lines
1.8 KiB
Go

package handler
import (
"fmt"
"strings"
"testing"
)
// benchPackument builds a full packument shaped like a large real one:
// thousands of versions, each with dependencies, scripts and a readme.
func benchPackument(versions int) []byte {
var b strings.Builder
readme := strings.Repeat("Some documentation text. ", 160)
b.WriteString(`{"_id":"big","name":"big","dist-tags":{"latest":"1.0.` + fmt.Sprint(versions-1) + `"},"versions":{`)
for i := range versions {
if i > 0 {
b.WriteByte(',')
}
v := fmt.Sprintf("1.0.%d", i)
fmt.Fprintf(&b, `%q:{"name":"big","version":%q,"description":"A big package","main":"index.js",`+
`"scripts":{"test":"node test.js","build":"tsc -p ."},"dependencies":{`, v, v)
for d := range 25 {
if d > 0 {
b.WriteByte(',')
}
fmt.Fprintf(&b, `"dep-%d":"^%d.0.0"`, d, d)
}
fmt.Fprintf(&b, `},"readme":%q,"dist":{"shasum":"0123456789abcdef0123456789abcdef01234567",`+
`"integrity":"sha512-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",`+
`"tarball":"https://registry.npmjs.org/big/-/big-%s.tgz"}}`, readme, v)
}
b.WriteString(`},"time":{"created":"2015-01-01T00:00:00.000Z"`)
for i := range versions {
fmt.Fprintf(&b, `,"1.0.%d":"2016-01-01T00:00:00.000Z"`, i)
}
b.WriteString(`}}`)
return []byte(b.String())
}
func BenchmarkNPMRewriteMetadata(b *testing.B) {
body := benchPackument(5000)
h := &NPMHandler{proxy: testProxy(), proxyURL: "http://proxy.example"}
b.SetBytes(int64(len(body)))
b.ReportAllocs()
for b.Loop() {
if _, _, err := h.rewriteMetadataKeeping("big", body); err != nil {
b.Fatal(err)
}
}
}
func BenchmarkNPMVersionTarball(b *testing.B) {
body := benchPackument(5000)
b.SetBytes(int64(len(body)))
b.ReportAllocs()
for b.Loop() {
if npmVersionTarball(body, "1.0.2500") == "" {
b.Fatal("tarball not found")
}
}
}