github.com/lusis/distribution@v2.0.1+incompatible/registry/storage/cache/cache_test.go (about) 1 package cache 2 3 import ( 4 "testing" 5 6 "golang.org/x/net/context" 7 ) 8 9 // checkLayerInfoCache takes a cache implementation through a common set of 10 // operations. If adding new tests, please add them here so new 11 // implementations get the benefit. 12 func checkLayerInfoCache(t *testing.T, lic LayerInfoCache) { 13 ctx := context.Background() 14 15 exists, err := lic.Contains(ctx, "", "fake:abc") 16 if err == nil { 17 t.Fatalf("expected error checking for cache item with empty repo") 18 } 19 20 exists, err = lic.Contains(ctx, "foo/bar", "") 21 if err == nil { 22 t.Fatalf("expected error checking for cache item with empty digest") 23 } 24 25 exists, err = lic.Contains(ctx, "foo/bar", "fake:abc") 26 if err != nil { 27 t.Fatalf("unexpected error checking for cache item: %v", err) 28 } 29 30 if exists { 31 t.Fatalf("item should not exist") 32 } 33 34 if err := lic.Add(ctx, "", "fake:abc"); err == nil { 35 t.Fatalf("expected error adding cache item with empty name") 36 } 37 38 if err := lic.Add(ctx, "foo/bar", ""); err == nil { 39 t.Fatalf("expected error adding cache item with empty digest") 40 } 41 42 if err := lic.Add(ctx, "foo/bar", "fake:abc"); err != nil { 43 t.Fatalf("unexpected error adding item: %v", err) 44 } 45 46 exists, err = lic.Contains(ctx, "foo/bar", "fake:abc") 47 if err != nil { 48 t.Fatalf("unexpected error checking for cache item: %v", err) 49 } 50 51 if !exists { 52 t.Fatalf("item should exist") 53 } 54 55 _, err = lic.Meta(ctx, "") 56 if err == nil || err == ErrNotFound { 57 t.Fatalf("expected error getting meta for cache item with empty digest") 58 } 59 60 _, err = lic.Meta(ctx, "fake:abc") 61 if err != ErrNotFound { 62 t.Fatalf("expected unknown layer error getting meta for cache item with empty digest") 63 } 64 65 if err = lic.SetMeta(ctx, "", LayerMeta{}); err == nil { 66 t.Fatalf("expected error setting meta for cache item with empty digest") 67 } 68 69 if err = lic.SetMeta(ctx, "foo/bar", LayerMeta{}); err == nil { 70 t.Fatalf("expected error setting meta for cache item with empty meta") 71 } 72 73 expected := LayerMeta{Path: "/foo/bar", Length: 20} 74 if err := lic.SetMeta(ctx, "foo/bar", expected); err != nil { 75 t.Fatalf("unexpected error setting meta: %v", err) 76 } 77 78 meta, err := lic.Meta(ctx, "foo/bar") 79 if err != nil { 80 t.Fatalf("unexpected error getting meta: %v", err) 81 } 82 83 if meta != expected { 84 t.Fatalf("retrieved meta data did not match: %v", err) 85 } 86 }