summaryrefslogtreecommitdiffstats
path: root/hugolib/site_benchmark_new_test.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-17 08:45:14 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-17 09:05:37 +0100
commit1622510a5c651b59a79f64e9dc3cacd24832ec0b (patch)
tree3c7b916a93f7c48b1025e4620f404202c778842f /hugolib/site_benchmark_new_test.go
parent56d0b658879bbf476810d013176d6568553aa71e (diff)
Add benchmark for content edits
Diffstat (limited to 'hugolib/site_benchmark_new_test.go')
-rw-r--r--hugolib/site_benchmark_new_test.go76
1 files changed, 60 insertions, 16 deletions
diff --git a/hugolib/site_benchmark_new_test.go b/hugolib/site_benchmark_new_test.go
index 64f3bc8d8..fe0b84d43 100644
--- a/hugolib/site_benchmark_new_test.go
+++ b/hugolib/site_benchmark_new_test.go
@@ -22,6 +22,8 @@ import (
"strings"
"testing"
+ "github.com/gohugoio/hugo/resources/page"
+
qt "github.com/frankban/quicktest"
)
@@ -370,26 +372,68 @@ func TestBenchmarkSiteNew(b *testing.T) {
}
}
-// TODO(bep) eventually remove the old (too complicated setup).
func BenchmarkSiteNew(b *testing.B) {
+ rnd := rand.New(rand.NewSource(32))
benchmarks := getBenchmarkSiteNewTestCases()
-
- for _, bm := range benchmarks {
- b.Run(bm.name, func(b *testing.B) {
- sites := make([]*sitesBuilder, b.N)
- for i := 0; i < b.N; i++ {
- sites[i] = bm.create(b)
+ for _, edit := range []bool{true, false} {
+ for _, bm := range benchmarks {
+ name := bm.name
+ if edit {
+ name += "/Edit"
}
+ b.Run(name, func(b *testing.B) {
+ sites := make([]*sitesBuilder, b.N)
+ for i := 0; i < b.N; i++ {
+ sites[i] = bm.create(b)
+ if edit {
+ sites[i].Running()
+ }
+ }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- s := sites[i]
- err := s.BuildE(BuildCfg{})
- if err != nil {
- b.Fatal(err)
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ if edit {
+ b.StopTimer()
+ }
+ s := sites[i]
+ err := s.BuildE(BuildCfg{})
+ if err != nil {
+ b.Fatal(err)
+ }
+ bm.check(s)
+
+ if edit {
+ if edit {
+ b.StartTimer()
+ }
+ // Edit a random page in a random language.
+ pages := s.H.Sites[rnd.Intn(len(s.H.Sites))].Pages()
+ var p page.Page
+ count := 0
+ for {
+ count++
+ if count > 100 {
+ panic("infinite loop")
+ }
+ p = pages[rnd.Intn(len(pages))]
+ if !p.File().IsZero() {
+ break
+ }
+ }
+
+ s.EditFiles(p.File().Filename(), fmt.Sprintf(`---
+title: %s
+---
+
+Edited!!`, p.Title()))
+
+ err := s.BuildE(BuildCfg{})
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
}
- bm.check(s)
- }
- })
+ })
+ }
}
}