87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
package cache
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"golang.org/x/net/context"
 | 
						|
)
 | 
						|
 | 
						|
// checkLayerInfoCache takes a cache implementation through a common set of
 | 
						|
// operations. If adding new tests, please add them here so new
 | 
						|
// implementations get the benefit.
 | 
						|
func checkLayerInfoCache(t *testing.T, lic LayerInfoCache) {
 | 
						|
	ctx := context.Background()
 | 
						|
 | 
						|
	exists, err := lic.Contains(ctx, "", "fake:abc")
 | 
						|
	if err == nil {
 | 
						|
		t.Fatalf("expected error checking for cache item with empty repo")
 | 
						|
	}
 | 
						|
 | 
						|
	exists, err = lic.Contains(ctx, "foo/bar", "")
 | 
						|
	if err == nil {
 | 
						|
		t.Fatalf("expected error checking for cache item with empty digest")
 | 
						|
	}
 | 
						|
 | 
						|
	exists, err = lic.Contains(ctx, "foo/bar", "fake:abc")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("unexpected error checking for cache item: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if exists {
 | 
						|
		t.Fatalf("item should not exist")
 | 
						|
	}
 | 
						|
 | 
						|
	if err := lic.Add(ctx, "", "fake:abc"); err == nil {
 | 
						|
		t.Fatalf("expected error adding cache item with empty name")
 | 
						|
	}
 | 
						|
 | 
						|
	if err := lic.Add(ctx, "foo/bar", ""); err == nil {
 | 
						|
		t.Fatalf("expected error adding cache item with empty digest")
 | 
						|
	}
 | 
						|
 | 
						|
	if err := lic.Add(ctx, "foo/bar", "fake:abc"); err != nil {
 | 
						|
		t.Fatalf("unexpected error adding item: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	exists, err = lic.Contains(ctx, "foo/bar", "fake:abc")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("unexpected error checking for cache item: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if !exists {
 | 
						|
		t.Fatalf("item should exist")
 | 
						|
	}
 | 
						|
 | 
						|
	_, err = lic.Meta(ctx, "")
 | 
						|
	if err == nil || err == ErrNotFound {
 | 
						|
		t.Fatalf("expected error getting meta for cache item with empty digest")
 | 
						|
	}
 | 
						|
 | 
						|
	_, err = lic.Meta(ctx, "fake:abc")
 | 
						|
	if err != ErrNotFound {
 | 
						|
		t.Fatalf("expected unknown layer error getting meta for cache item with empty digest")
 | 
						|
	}
 | 
						|
 | 
						|
	if err = lic.SetMeta(ctx, "", LayerMeta{}); err == nil {
 | 
						|
		t.Fatalf("expected error setting meta for cache item with empty digest")
 | 
						|
	}
 | 
						|
 | 
						|
	if err = lic.SetMeta(ctx, "foo/bar", LayerMeta{}); err == nil {
 | 
						|
		t.Fatalf("expected error setting meta for cache item with empty meta")
 | 
						|
	}
 | 
						|
 | 
						|
	expected := LayerMeta{Path: "/foo/bar", Length: 20}
 | 
						|
	if err := lic.SetMeta(ctx, "foo/bar", expected); err != nil {
 | 
						|
		t.Fatalf("unexpected error setting meta: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	meta, err := lic.Meta(ctx, "foo/bar")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("unexpected error getting meta: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if meta != expected {
 | 
						|
		t.Fatalf("retrieved meta data did not match: %v", err)
 | 
						|
	}
 | 
						|
}
 |