mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-29 03:06:55 +00:00
hugolib: Add some more site benchmarks
This commit is contained in:
parent
a843ca53b5
commit
df374851a0
1 changed files with 69 additions and 7 deletions
|
@ -17,6 +17,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -28,15 +29,30 @@ type siteBenchmarkTestcase struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
|
func getBenchmarkSiteNewTestCases() []siteBenchmarkTestcase {
|
||||||
// TODO(bep) create some common and stable data set
|
|
||||||
|
|
||||||
const pageContent = `---
|
const markdownSnippets = `
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
|
||||||
|
This is [an example](http://example.com/ "Title") inline link.
|
||||||
|
|
||||||
|
[This link](http://example.net/) has no title attribute.
|
||||||
|
|
||||||
|
This is [Relative](/all-is-relative).
|
||||||
|
|
||||||
|
See my [About](/about/) page for details.
|
||||||
|
`
|
||||||
|
|
||||||
|
pageContent := func(size int) string {
|
||||||
|
return `---
|
||||||
title: "My Page"
|
title: "My Page"
|
||||||
---
|
---
|
||||||
|
|
||||||
My page content.
|
My page content.
|
||||||
|
|
||||||
`
|
` + strings.Repeat(markdownSnippets, size)
|
||||||
|
}
|
||||||
|
|
||||||
config := `
|
config := `
|
||||||
baseURL = "https://example.com"
|
baseURL = "https://example.com"
|
||||||
|
@ -46,7 +62,7 @@ baseURL = "https://example.com"
|
||||||
benchmarks := []siteBenchmarkTestcase{
|
benchmarks := []siteBenchmarkTestcase{
|
||||||
{"Bundle with image", func(b testing.TB) *sitesBuilder {
|
{"Bundle with image", func(b testing.TB) *sitesBuilder {
|
||||||
sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
|
sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
|
||||||
sb.WithContent("content/blog/mybundle/index.md", pageContent)
|
sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
|
||||||
sb.WithSunset("content/blog/mybundle/sunset1.jpg")
|
sb.WithSunset("content/blog/mybundle/sunset1.jpg")
|
||||||
|
|
||||||
return sb
|
return sb
|
||||||
|
@ -59,7 +75,7 @@ baseURL = "https://example.com"
|
||||||
},
|
},
|
||||||
{"Bundle with JSON file", func(b testing.TB) *sitesBuilder {
|
{"Bundle with JSON file", func(b testing.TB) *sitesBuilder {
|
||||||
sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
|
sb := newTestSitesBuilder(b).WithConfigFile("toml", config)
|
||||||
sb.WithContent("content/blog/mybundle/index.md", pageContent)
|
sb.WithContent("content/blog/mybundle/index.md", pageContent(1))
|
||||||
sb.WithContent("content/blog/mybundle/mydata.json", `{ "hello": "world" }`)
|
sb.WithContent("content/blog/mybundle/mydata.json", `{ "hello": "world" }`)
|
||||||
|
|
||||||
return sb
|
return sb
|
||||||
|
@ -70,6 +86,52 @@ baseURL = "https://example.com"
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{"Tags and categories", func(b testing.TB) *sitesBuilder {
|
||||||
|
sb := newTestSitesBuilder(b).WithConfigFile("toml", `
|
||||||
|
title = "Tags and Cats"
|
||||||
|
baseURL = "https://example.com"
|
||||||
|
|
||||||
|
`)
|
||||||
|
|
||||||
|
const pageTemplate = `
|
||||||
|
---
|
||||||
|
title: "Some tags and cats"
|
||||||
|
categories: ["caGR", "cbGR"]
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
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", `
|
||||||
|
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))
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb
|
||||||
|
},
|
||||||
|
func(s *sitesBuilder) {
|
||||||
|
s.AssertFileContent("public/page8/index.html", "https://example.com/about/")
|
||||||
|
},
|
||||||
|
},
|
||||||
{"Deep content tree", func(b testing.TB) *sitesBuilder {
|
{"Deep content tree", func(b testing.TB) *sitesBuilder {
|
||||||
|
|
||||||
sb := newTestSitesBuilder(b).WithConfigFile("toml", `
|
sb := newTestSitesBuilder(b).WithConfigFile("toml", `
|
||||||
|
@ -92,13 +154,13 @@ contentDir="content/sv"
|
||||||
`)
|
`)
|
||||||
|
|
||||||
createContent := func(dir, name string) {
|
createContent := func(dir, name string) {
|
||||||
sb.WithContent(filepath.Join("content", dir, name), pageContent)
|
sb.WithContent(filepath.Join("content", dir, name), pageContent(1))
|
||||||
}
|
}
|
||||||
|
|
||||||
createBundledFiles := func(dir string) {
|
createBundledFiles := func(dir string) {
|
||||||
sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
|
sb.WithContent(filepath.Join("content", dir, "data.json"), `{ "hello": "world" }`)
|
||||||
for i := 1; i <= 3; i++ {
|
for i := 1; i <= 3; i++ {
|
||||||
sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent)
|
sb.WithContent(filepath.Join("content", dir, fmt.Sprintf("page%d.md", i)), pageContent(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue