diff options
Diffstat (limited to 'hugolib/site_benchmark_new_test.go')
-rw-r--r-- | hugolib/site_benchmark_new_test.go | 230 |
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) { |