Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-12-05 19:05:14 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-12-05 19:05:14 +0300
commit07ac526ac57e71b6cfd6b810709b1255b65dd113 (patch)
tree14ea757bb01bc330d6609a0837e9fccfce8ab9cb /internal
parentaf3eeb3bf82c49bfe3b0371b5fb8aaf1ad9ff1b2 (diff)
Improve tests for gitlab source cache
Diffstat (limited to 'internal')
-rw-r--r--internal/source/gitlab/cache/cache_test.go47
-rw-r--r--internal/source/gitlab/cache/memstore.go5
2 files changed, 29 insertions, 23 deletions
diff --git a/internal/source/gitlab/cache/cache_test.go b/internal/source/gitlab/cache/cache_test.go
index cd6e6f06..75b673e0 100644
--- a/internal/source/gitlab/cache/cache_test.go
+++ b/internal/source/gitlab/cache/cache_test.go
@@ -14,18 +14,27 @@ import (
)
type client struct {
- started uint64
- resolutions uint64
- bootup chan uint64
- domain chan string
- failure error
+ started uint64
+ lookups uint64
+ bootup chan uint64
+ domain chan string
+ failure error
}
func (c *client) GetLookup(ctx context.Context, _ string) api.Lookup {
var lookup api.Lookup
+ // TODO This might not work on some architectures
+ //
+ // https://golang.org/pkg/sync/atomic/#pkg-note-BUG
+ //
+ // On ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility to
+ // arrange for 64-bit alignment of 64-bit words accessed atomically. The first
+ // word in a variable or in an allocated struct, array, or slice can be relied
+ // upon to be 64-bit aligned.
+
c.bootup <- atomic.AddUint64(&c.started, 1)
- defer atomic.AddUint64(&c.resolutions, 1)
+ defer atomic.AddUint64(&c.lookups, 1)
if c.failure == nil {
lookup.Name = <-c.domain
@@ -96,7 +105,7 @@ func TestResolve(t *testing.T) {
assert.NoError(t, lookup.Error)
assert.Equal(t, "my.gitlab.com", lookup.Name)
- assert.Equal(t, uint64(1), resolver.resolutions)
+ assert.Equal(t, uint64(1), resolver.lookups)
})
})
@@ -115,12 +124,12 @@ func TestResolve(t *testing.T) {
go receiver()
go receiver()
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
resolver.domain <- "my.gitlab.com"
wg.Wait()
- assert.Equal(t, uint64(1), resolver.resolutions)
+ assert.Equal(t, uint64(1), resolver.lookups)
})
})
@@ -130,7 +139,7 @@ func TestResolve(t *testing.T) {
lookup := cache.Resolve(context.Background(), "my.gitlab.com")
assert.Equal(t, "my.gitlab.com", lookup.Name)
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
})
})
})
@@ -147,13 +156,13 @@ func TestResolve(t *testing.T) {
<-resolver.bootup
assert.Equal(t, uint64(1), resolver.started)
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
resolver.domain <- "my.gitlab.com"
<-lookup
assert.Equal(t, uint64(1), resolver.started)
- assert.Equal(t, uint64(1), resolver.resolutions)
+ assert.Equal(t, uint64(1), resolver.lookups)
})
})
})
@@ -164,10 +173,10 @@ func TestResolve(t *testing.T) {
lookup := cache.Resolve(context.Background(), "my.gitlab.com")
assert.Equal(t, "my.gitlab.com", lookup.Name)
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
resolver.domain <- "my.gitlab.com"
- assert.Equal(t, uint64(1), resolver.resolutions)
+ assert.Equal(t, uint64(1), resolver.lookups)
})
})
})
@@ -179,10 +188,10 @@ func TestResolve(t *testing.T) {
cache.Resolve(context.Background(), "my.gitlab.com")
cache.Resolve(context.Background(), "my.gitlab.com")
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
resolver.domain <- "my.gitlab.com"
- assert.Equal(t, uint64(1), resolver.resolutions)
+ assert.Equal(t, uint64(1), resolver.lookups)
})
})
})
@@ -193,7 +202,7 @@ func TestResolve(t *testing.T) {
lookup := cache.Resolve(context.Background(), "my.gitlab.com")
- assert.Equal(t, uint64(3), resolver.resolutions)
+ assert.Equal(t, uint64(3), resolver.lookups)
assert.EqualError(t, lookup.Error, "500 err")
})
})
@@ -205,7 +214,7 @@ func TestResolve(t *testing.T) {
withTestCache(resolverConfig{}, func(cache *Cache, resolver *client) {
lookup := cache.Resolve(ctx, "my.gitlab.com")
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
assert.EqualError(t, lookup.Error, "context done")
})
})
@@ -217,7 +226,7 @@ func TestResolve(t *testing.T) {
withTestCache(resolverConfig{}, func(cache *Cache, resolver *client) {
lookup := cache.Resolve(context.Background(), "my.gitlab.com")
- assert.Equal(t, uint64(0), resolver.resolutions)
+ assert.Equal(t, uint64(0), resolver.lookups)
assert.EqualError(t, lookup.Error, "context done")
})
})
diff --git a/internal/source/gitlab/cache/memstore.go b/internal/source/gitlab/cache/memstore.go
index f53f372f..8b22bde0 100644
--- a/internal/source/gitlab/cache/memstore.go
+++ b/internal/source/gitlab/cache/memstore.go
@@ -39,10 +39,7 @@ func (m *memstore) ReplaceOrCreate(domain string, entry *Entry) *Entry {
m.mux.Lock()
defer m.mux.Unlock()
- if _, exists := m.store.Get(domain); exists {
- m.store.Delete(domain)
- }
-
+ m.store.Delete(domain)
m.store.SetDefault(domain, entry)
return entry