mirror of
https://github.com/git-pkgs/proxy.git
synced 2026-11-11 16:49:17 -05:00
61 lines
1.8 KiB
Go
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")
|
|
}
|
|
}
|
|
}
|