1
0
mirror of https://github.com/openshift/image-registry.git synced 2026-02-05 18:45:15 +01:00
Files
image-registry/pkg/dockerregistry/server/cache/cacheprovider_test.go
Flavian Missi f9d93c44be pkg,test: import distribution/distribution/v3
instead of the deprecated docker/distribution
2023-06-19 12:06:47 +02:00

228 lines
5.1 KiB
Go

package cache
import (
"testing"
"time"
clock "k8s.io/utils/clock/testing"
"github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/context"
"github.com/opencontainers/go-digest"
"github.com/openshift/image-registry/pkg/dockerregistry/server/metrics"
)
func TestGlobalProviderStat(t *testing.T) {
now := time.Now()
clock := clock.NewFakeClock(now)
cache, err := NewBlobDigest(5, 3, ttl1m, metrics.NewNoopMetrics())
if err != nil {
t.Fatal(err)
}
cache.(*digestCache).clock = clock
cacheprovider := &Provider{
Cache: cache,
}
_, err = cacheprovider.Stat(context.Background(), digest.Digest("sha256:foo"))
if err == nil {
t.Fatal("error expected")
}
if err != digest.ErrDigestInvalidLength {
t.Fatalf("unexpected error: %v", err)
}
_, err = cacheprovider.Stat(context.Background(), digest.Digest("sha256:4355a46b19d348dc2f57c"))
if err == nil {
t.Fatal("error expected")
}
if err != digest.ErrDigestInvalidLength {
t.Fatalf("unexpected error: %v", err)
}
dgst := digest.Digest("sha256:4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865")
desc, err := cacheprovider.Stat(context.Background(), dgst)
if err == nil {
t.Fatal("error expected")
}
if err != distribution.ErrBlobUnknown {
t.Fatalf("unexpected error: %v", err)
}
err = cacheprovider.SetDescriptor(context.Background(), dgst, distribution.Descriptor{
Digest: dgst,
Size: 2,
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
desc, err = cacheprovider.Stat(context.Background(), dgst)
if err != nil {
t.Fatal(err)
}
if desc.Digest != dgst {
t.Fatalf("unexpected descriptor: %#+v", desc)
}
clock.Step(ttl5m)
desc, err = cacheprovider.Stat(context.Background(), dgst)
if err == nil {
t.Fatal("error expected")
}
if err != distribution.ErrBlobUnknown {
t.Fatalf("unexpected error: %v", err)
}
}
func TestGlobalProviderClear(t *testing.T) {
now := time.Now()
clock := clock.NewFakeClock(now)
cache, err := NewBlobDigest(5, 3, ttl1m, metrics.NewNoopMetrics())
if err != nil {
t.Fatal(err)
}
cache.(*digestCache).clock = clock
cacheprovider := &Provider{
Cache: cache,
}
dgst := digest.Digest("sha256:4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865")
err = cacheprovider.SetDescriptor(context.Background(), dgst, distribution.Descriptor{
Digest: dgst,
Size: 2,
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
desc, err := cacheprovider.Stat(context.Background(), dgst)
if err != nil {
t.Fatal(err)
}
if desc.Digest != dgst {
t.Fatalf("unexpected descriptor: %#+v", desc)
}
err = cacheprovider.Clear(context.Background(), dgst)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
_, err = cacheprovider.Stat(context.Background(), dgst)
if err == nil {
t.Fatal("error expected")
}
if err != distribution.ErrBlobUnknown {
t.Fatalf("unexpected error: %v", err)
}
}
func TestRepositoryScopedProviderStat(t *testing.T) {
now := time.Now()
clock := clock.NewFakeClock(now)
cache, err := NewBlobDigest(5, 3, ttl1m, metrics.NewNoopMetrics())
if err != nil {
t.Fatal(err)
}
cache.(*digestCache).clock = clock
cacheprovider := &Provider{
Cache: cache,
}
repoprovider, err := cacheprovider.RepositoryScoped("foo|invalid|repository")
if err == nil {
t.Fatalf("error expected")
}
repoprovider, err = cacheprovider.RepositoryScoped("foo")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
_, err = repoprovider.Stat(context.Background(), digest.Digest("sha256:foo"))
if err == nil {
t.Fatal("error expected")
}
if err != digest.ErrDigestInvalidLength {
t.Fatalf("unexpected error: %v", err)
}
_, err = cacheprovider.Stat(context.Background(), digest.Digest("sha256:4355a46b19d348dc2f57c"))
if err == nil {
t.Fatal("error expected")
}
if err != digest.ErrDigestInvalidLength {
t.Fatalf("unexpected error: %v", err)
}
dgst := digest.Digest("sha256:4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865")
err = repoprovider.SetDescriptor(context.Background(), dgst, distribution.Descriptor{
Digest: dgst,
Size: 2,
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
desc, err := cacheprovider.Stat(context.Background(), dgst)
if err != nil {
t.Fatal(err)
}
if desc.Digest != dgst {
t.Fatalf("unexpected descriptor: %#+v", desc)
}
desc, err = repoprovider.Stat(context.Background(), dgst)
if err != nil {
t.Fatal(err)
}
if desc.Digest != dgst {
t.Fatalf("unexpected descriptor: %#+v", desc)
}
err = repoprovider.Clear(context.Background(), dgst)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
_, err = repoprovider.Stat(context.Background(), dgst)
if err == nil {
t.Fatal("error expected")
}
if err != distribution.ErrBlobUnknown {
t.Fatalf("unexpected error: %v", err)
}
desc, err = cacheprovider.Stat(context.Background(), dgst)
if err != nil {
t.Fatal(err)
}
if desc.Digest != dgst {
t.Fatalf("unexpected descriptor: %#+v", desc)
}
clock.Step(ttl5m)
_, err = cacheprovider.Stat(context.Background(), dgst)
if err == nil {
t.Fatal("error expected")
}
if err != distribution.ErrBlobUnknown {
t.Fatalf("unexpected error: %v", err)
}
}