Fix some change detection issues on server reloads

* Fix change detection when .GetPage/site.GetPage is used from shortcode
* Fix stale content for GetPage results with short name lookups on server reloads

Fixes #7623
Fixes #7624
Fixes #7625
This commit is contained in:
Bjørn Erik Pedersen
2020-09-07 15:07:10 +02:00
parent 3ba7c92530
commit 4055c12184
14 changed files with 228 additions and 28 deletions

View File

@@ -14,6 +14,9 @@
package identity
import (
"fmt"
"math/rand"
"strconv"
"testing"
qt "github.com/frankban/quicktest"
@@ -29,6 +32,54 @@ func TestIdentityManager(t *testing.T) {
c.Assert(im.Search(testIdentity{name: "notfound"}), qt.Equals, nil)
}
func BenchmarkIdentityManager(b *testing.B) {
createIds := func(num int) []Identity {
ids := make([]Identity, num)
for i := 0; i < num; i++ {
ids[i] = testIdentity{name: fmt.Sprintf("id%d", i)}
}
return ids
}
b.Run("Add", func(b *testing.B) {
c := qt.New(b)
b.StopTimer()
ids := createIds(b.N)
im := NewManager(testIdentity{"first"})
b.StartTimer()
for i := 0; i < b.N; i++ {
im.Add(ids[i])
}
b.StopTimer()
c.Assert(im.GetIdentities(), qt.HasLen, b.N+1)
})
b.Run("Search", func(b *testing.B) {
c := qt.New(b)
b.StopTimer()
ids := createIds(b.N)
im := NewManager(testIdentity{"first"})
for i := 0; i < b.N; i++ {
im.Add(ids[i])
}
b.StartTimer()
for i := 0; i < b.N; i++ {
name := "id" + strconv.Itoa(rand.Intn(b.N))
id := im.Search(testIdentity{name: name})
c.Assert(id.GetIdentity().Name(), qt.Equals, name)
}
})
}
type testIdentity struct {
name string
}