aboutsummaryrefslogtreecommitdiffhomepage
path: root/hugolib/site_benchmark_new_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'hugolib/site_benchmark_new_test.go')
-rw-r--r--hugolib/site_benchmark_new_test.go230
1 files changed, 112 insertions, 118 deletions
diff --git a/hugolib/site_benchmark_new_test.go b/hugolib/site_benchmark_new_test.go
index 1f16c97e5..228dbeb5d 100644
--- a/hugolib/site_benchmark_new_test.go
+++ b/hugolib/site_benchmark_new_test.go
@@ -118,7 +118,6 @@ See my [About](/about/) page for details.
`
func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
-
pageContentWithCategory := func(size int, category string) string {
return getBenchmarkTestDataPageContentForMarkdown(size, category, benchmarkMarkdownSnippets)
}
@@ -132,40 +131,41 @@ baseURL = "https://example.com"
`
benchmarks := []siteBenchmarkTestcase{
- {"Bundle with image", func(b testing.TB) *sitesBuilder {
- sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
- sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
- sb.WithSunset("content/blog/mybundle/sunset1.jpg")
+ {
+ "Bundle with image", func(b testing.TB) *sitesBuilder {
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
+ sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
+ sb.WithSunset("content/blog/mybundle/sunset1.jpg")
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.AssertFileContent("public/blog/mybundle/index.html", "/blog/mybundle/sunset1.jpg")
s.CheckExists("public/blog/mybundle/sunset1.jpg")
-
},
},
- {"Bundle with JSON file", func(b testing.TB) *sitesBuilder {
- sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
- sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
- sb.WithContent("content/blog/mybundle/mydata.json", `{ "hello": "world" }`)
+ {
+ "Bundle with JSON file", func(b testing.TB) *sitesBuilder {
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
+ sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
+ sb.WithContent("content/blog/mybundle/mydata.json", `{ "hello": "world" }`)
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.AssertFileContent("public/blog/mybundle/index.html", "Resources: application/json: /blog/mybundle/mydata.json")
s.CheckExists("public/blog/mybundle/mydata.json")
-
},
},
- {"Tags and categories", func(b testing.TB) *sitesBuilder {
- sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+ {
+ "Tags and categories", func(b testing.TB) *sitesBuilder {
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", `
title = "Tags and Cats"
baseURL = "https://example.com"
`)
- const pageTemplate = `
+ const pageTemplate = `
---
title: "Some tags and cats"
categories: ["caGR", "cbGR"]
@@ -175,50 +175,51 @@ tags: ["taGR", "tbGR"]
Some content.
`
- for i := 1; i <= 100; i++ {
- content := strings.Replace(pageTemplate, "GR", strconv.Itoa(i/3), -1)
- sb.WithContent(fmt.Sprintf("content/page%d.md", i), content)
- }
+ for i := 1; i <= 100; i++ {
+ content := strings.Replace(pageTemplate, "GR", strconv.Itoa(i/3), -1)
+ sb.WithContent(fmt.Sprintf("content/page%d.md", i), content)
+ }
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.AssertFileContent("public/page3/index.html", "/page3/|Permalink: https://example.com/page3/")
s.AssertFileContent("public/tags/ta3/index.html", "|ta3|")
},
},
- {"Canonify URLs", func(b testing.TB) *sitesBuilder {
- sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+ {
+ "Canonify URLs", func(b testing.TB) *sitesBuilder {
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", `
title = "Canon"
baseURL = "https://example.com"
canonifyURLs = true
`)
- for i := 1; i <= 100; i++ {
- sb.WithContent(fmt.Sprintf("content/page%d.md", i), pageContent(i))
- }
+ for i := 1; i <= 100; i++ {
+ sb.WithContent(fmt.Sprintf("content/page%d.md", i), pageContent(i))
+ }
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.AssertFileContent("public/page8/index.html", "https://example.com/about/")
},
},
- {"Deep content tree", func(b testing.TB) *sitesBuilder {
- return getBenchmarkSiteDeepContent(b)
- },
+ {
+ "Deep content tree", func(b testing.TB) *sitesBuilder {
+ return getBenchmarkSiteDeepContent(b)
+ },
func(s *sitesBuilder) {
s.CheckExists("public/blog/mybundle/index.html")
s.Assert(len(s.H.Sites), qt.Equals, 4)
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, len(s.H.Sites[1].RegularPages()))
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, 30)
-
},
},
- {"Many HTML templates", func(b testing.TB) *sitesBuilder {
-
- pageTemplateTemplate := `
+ {
+ "Many HTML templates", func(b testing.TB) *sitesBuilder {
+ pageTemplateTemplate := `
<!DOCTYPE html>
<html>
<head>
@@ -243,7 +244,7 @@ canonifyURLs = true
</html>
`
- sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", `
baseURL = "https://example.com"
[languages]
@@ -262,37 +263,36 @@ contentDir="content/sv"
`)
- createContent := func(dir, name string) {
- sb.WithContent(filepath.Join("content", dir, name), pageContent(1))
- }
+ createContent := func(dir, name string) {
+ sb.WithContent(filepath.Join("content", dir, name), pageContent(1))
+ }
- for _, lang := range []string{"en", "fr", "no", "sv"} {
- sb.WithTemplatesAdded(fmt.Sprintf("_default/single.%s.html", lang), pageTemplateTemplate)
- sb.WithTemplatesAdded(fmt.Sprintf("_default/list.%s.html", lang), pageTemplateTemplate)
+ for _, lang := range []string{"en", "fr", "no", "sv"} {
+ sb.WithTemplatesAdded(fmt.Sprintf("_default/single.%s.html", lang), pageTemplateTemplate)
+ sb.WithTemplatesAdded(fmt.Sprintf("_default/list.%s.html", lang), pageTemplateTemplate)
- for level := 1; level <= 5; level++ {
- sectionDir := path.Join(lang, strings.Repeat("section/", level))
- createContent(sectionDir, "_index.md")
- for i := 1; i <= 3; i++ {
- leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
- createContent(leafBundleDir, "index.md")
+ for level := 1; level <= 5; level++ {
+ sectionDir := path.Join(lang, strings.Repeat("section/", level))
+ createContent(sectionDir, "_index.md")
+ for i := 1; i <= 3; i++ {
+ leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
+ createContent(leafBundleDir, "index.md")
+ }
}
}
- }
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.CheckExists("public/blog/mybundle/index.html")
s.Assert(len(s.H.Sites), qt.Equals, 4)
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, len(s.H.Sites[1].RegularPages()))
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, 15)
-
},
},
- {"Page collections", func(b testing.TB) *sitesBuilder {
-
- pageTemplateTemplate := `
+ {
+ "Page collections", func(b testing.TB) *sitesBuilder {
+ pageTemplateTemplate := `
{{ if .IsNode }}
{{ len .Paginator.Pages }}
{{ end }}
@@ -308,7 +308,7 @@ contentDir="content/sv"
{{ with .Prev }}Prev: {{ .RelPermalink }}{{ end }}
`
- sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", `
baseURL = "https://example.com"
[languages]
@@ -327,57 +327,55 @@ contentDir="content/sv"
`)
- sb.WithTemplates("index.html", pageTemplateTemplate)
- sb.WithTemplates("_default/single.html", pageTemplateTemplate)
- sb.WithTemplates("_default/list.html", pageTemplateTemplate)
+ sb.WithTemplates("index.html", pageTemplateTemplate)
+ sb.WithTemplates("_default/single.html", pageTemplateTemplate)
+ sb.WithTemplates("_default/list.html", pageTemplateTemplate)
- r := rand.New(rand.NewSource(99))
+ r := rand.New(rand.NewSource(99))
- createContent := func(dir, name string) {
- var content string
- if strings.Contains(name, "_index") {
- content = pageContent(1)
+ createContent := func(dir, name string) {
+ var content string
+ if strings.Contains(name, "_index") {
+ content = pageContent(1)
+ } else {
+ content = pageContentWithCategory(1, fmt.Sprintf("category%d", r.Intn(5)+1))
+ }
- } else {
- content = pageContentWithCategory(1, fmt.Sprintf("category%d", r.Intn(5)+1))
+ sb.WithContent(filepath.Join("content", dir, name), content)
}
- sb.WithContent(filepath.Join("content", dir, name), content)
- }
-
- createBundledFiles := func(dir string) {
- sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
- for i := 1; i <= 3; i++ {
- sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
+ createBundledFiles := func(dir string) {
+ sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
+ for i := 1; i <= 3; i++ {
+ sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
+ }
}
- }
- for _, lang := range []string{"en", "fr", "no", "sv"} {
- for level := 1; level <= r.Intn(5)+1; level++ {
- sectionDir := path.Join(lang, strings.Repeat("section/", level))
- createContent(sectionDir, "_index.md")
- createBundledFiles(sectionDir)
- for i := 1; i <= r.Intn(20)+1; i++ {
- leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
- createContent(leafBundleDir, "index.md")
- createBundledFiles(path.Join(leafBundleDir, "assets1"))
- createBundledFiles(path.Join(leafBundleDir, "assets1", "assets2"))
+ for _, lang := range []string{"en", "fr", "no", "sv"} {
+ for level := 1; level <= r.Intn(5)+1; level++ {
+ sectionDir := path.Join(lang, strings.Repeat("section/", level))
+ createContent(sectionDir, "_index.md")
+ createBundledFiles(sectionDir)
+ for i := 1; i <= r.Intn(20)+1; i++ {
+ leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
+ createContent(leafBundleDir, "index.md")
+ createBundledFiles(path.Join(leafBundleDir, "assets1"))
+ createBundledFiles(path.Join(leafBundleDir, "assets1", "assets2"))
+ }
}
}
- }
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.CheckExists("public/blog/mybundle/index.html")
s.Assert(len(s.H.Sites), qt.Equals, 4)
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, 26)
-
},
},
- {"List terms", func(b testing.TB) *sitesBuilder {
-
- pageTemplateTemplate := `
+ {
+ "List terms", func(b testing.TB) *sitesBuilder {
+ pageTemplateTemplate := `
<ul>
{{ range (.GetTerms "categories") }}
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
@@ -385,46 +383,44 @@ contentDir="content/sv"
</ul>
`
- sb := newTestSitesBuilder(b).WithConfigFile("toml", `
+ sb := newTestSitesBuilder(b).WithConfigFile("toml", `
baseURL = "https://example.com"
`)
- sb.WithTemplates("_default/single.html", pageTemplateTemplate)
+ sb.WithTemplates("_default/single.html", pageTemplateTemplate)
- r := rand.New(rand.NewSource(99))
+ r := rand.New(rand.NewSource(99))
- createContent := func(dir, name string) {
- var content string
- if strings.Contains(name, "_index") {
- content = pageContent(1)
- } else {
- content = pageContentWithCategory(1, fmt.Sprintf("category%d", r.Intn(5)+1))
- sb.WithContent(filepath.Join("content", dir, name), content)
+ createContent := func(dir, name string) {
+ var content string
+ if strings.Contains(name, "_index") {
+ content = pageContent(1)
+ } else {
+ content = pageContentWithCategory(1, fmt.Sprintf("category%d", r.Intn(5)+1))
+ sb.WithContent(filepath.Join("content", dir, name), content)
+ }
}
- }
- for level := 1; level <= r.Intn(5)+1; level++ {
- sectionDir := path.Join(strings.Repeat("section/", level))
- createContent(sectionDir, "_index.md")
- for i := 1; i <= r.Intn(33); i++ {
- leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
- createContent(leafBundleDir, "index.md")
+ for level := 1; level <= r.Intn(5)+1; level++ {
+ sectionDir := path.Join(strings.Repeat("section/", level))
+ createContent(sectionDir, "_index.md")
+ for i := 1; i <= r.Intn(33); i++ {
+ leafBundleDir := path.Join(sectionDir, fmt.Sprintf("bundle%d", i))
+ createContent(leafBundleDir, "index.md")
+ }
}
- }
- return sb
- },
+ return sb
+ },
func(s *sitesBuilder) {
s.AssertFileContent("public/section/bundle8/index.html", ` <li><a href="https://example.com/categories/category1/">category1</a></li>`)
s.Assert(len(s.H.Sites), qt.Equals, 1)
s.Assert(len(s.H.Sites[0].RegularPages()), qt.Equals, 35)
-
},
},
}
return benchmarks
-
}
// Run the benchmarks below as tests. Mostly useful when adding new benchmark
@@ -440,7 +436,6 @@ func TestBenchmarkSiteNew(b *testing.T) {
b.Fatal(err)
}
bm.check(s)
-
})
}
}
@@ -465,7 +460,6 @@ Edited!!`, p.Title()))
// We could probably optimize that case, but it's not trivial.
b.Assert(int(counters.contentRenderCounter), qt.Equals, 4)
b.AssertFileContent("public"+p.RelPermalink()+"index.html", "Edited!!")
-
}
func BenchmarkSiteNew(b *testing.B) {