Skip to content

Commit

Permalink
hugolib: Add some more site benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
bep committed Aug 8, 2019
1 parent a843ca5 commit df37485
Showing 1 changed file with 69 additions and 7 deletions.
76 changes: 69 additions & 7 deletions hugolib/site_benchmark_new_test.go
Expand Up @@ -17,6 +17,7 @@ import (
"fmt" "fmt"
"path" "path"
"path/filepath" "path/filepath"
"strconv"
"strings" "strings"
"testing" "testing"
) )
Expand All @@ -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"
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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", `
Expand All @@ -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))
} }
} }


Expand Down

0 comments on commit df37485

Please sign in to comment.