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  }