Add unit tests for BlobEnumerator
Signed-off-by: Guillaume Rose <guillaume.rose@docker.com>master
							parent
							
								
									5538da4923
								
							
						
					
					
						commit
						c9c3324300
					
				|  | @ -5,6 +5,7 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"reflect" | 	"reflect" | ||||||
|  | 	"sort" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
|  | @ -14,6 +15,54 @@ import ( | ||||||
| 	"github.com/opencontainers/go-digest" | 	"github.com/opencontainers/go-digest" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | func TestLinkedBlobStoreEnumerator(t *testing.T) { | ||||||
|  | 	fooRepoName, _ := reference.WithName("nm/foo") | ||||||
|  | 	fooEnv := newManifestStoreTestEnv(t, fooRepoName, "thetag") | ||||||
|  | 	ctx := context.Background() | ||||||
|  | 
 | ||||||
|  | 	var expected []string | ||||||
|  | 	for i := 0; i < 2; i++ { | ||||||
|  | 		rs, dgst, err := testutil.CreateRandomTarFile() | ||||||
|  | 		if err != nil { | ||||||
|  | 			t.Fatalf("unexpected error generating test layer file") | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		expected = append(expected, dgst.String()) | ||||||
|  | 
 | ||||||
|  | 		wr, err := fooEnv.repository.Blobs(fooEnv.ctx).Create(fooEnv.ctx) | ||||||
|  | 		if err != nil { | ||||||
|  | 			t.Fatalf("unexpected error creating test upload: %v", err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if _, err := io.Copy(wr, rs); err != nil { | ||||||
|  | 			t.Fatalf("unexpected error copying to upload: %v", err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if _, err := wr.Commit(fooEnv.ctx, distribution.Descriptor{Digest: dgst}); err != nil { | ||||||
|  | 			t.Fatalf("unexpected error finishing upload: %v", err) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	enumerator, ok := fooEnv.repository.Blobs(fooEnv.ctx).(distribution.BlobEnumerator) | ||||||
|  | 	if !ok { | ||||||
|  | 		t.Fatalf("Blobs is not a BlobEnumerator") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var actual []string | ||||||
|  | 	if err := enumerator.Enumerate(ctx, func(dgst digest.Digest) error { | ||||||
|  | 		actual = append(actual, dgst.String()) | ||||||
|  | 		return nil | ||||||
|  | 	}); err != nil { | ||||||
|  | 		t.Fatalf("cannot enumerate on repository: %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	sort.Strings(actual) | ||||||
|  | 	sort.Strings(expected) | ||||||
|  | 	if !reflect.DeepEqual(expected, actual) { | ||||||
|  | 		t.Fatalf("unexpected array difference (expected: %v actual: %v)", expected, actual) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func TestLinkedBlobStoreCreateWithMountFrom(t *testing.T) { | func TestLinkedBlobStoreCreateWithMountFrom(t *testing.T) { | ||||||
| 	fooRepoName, _ := reference.WithName("nm/foo") | 	fooRepoName, _ := reference.WithName("nm/foo") | ||||||
| 	fooEnv := newManifestStoreTestEnv(t, fooRepoName, "thetag") | 	fooEnv := newManifestStoreTestEnv(t, fooRepoName, "thetag") | ||||||
|  |  | ||||||
|  | @ -83,6 +83,10 @@ func TestPathMapper(t *testing.T) { | ||||||
| 			}, | 			}, | ||||||
| 			expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/startedat", | 			expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/startedat", | ||||||
| 		}, | 		}, | ||||||
|  | 		{ | ||||||
|  | 			spec:     layersPathSpec{name: "foo/bar"}, | ||||||
|  | 			expected: "/docker/registry/v2/repositories/foo/bar/_layers", | ||||||
|  | 		}, | ||||||
| 	} { | 	} { | ||||||
| 		p, err := pathFor(testcase.spec) | 		p, err := pathFor(testcase.spec) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue