github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/pkg/registry/test/registry_test.go (about) 1 package test 2 3 import ( 4 "github.com/setekhid/ketos/pkg/registry" 5 "github.com/stretchr/testify/assert" 6 "github.com/stretchr/testify/require" 7 "os" 8 "testing" 9 ) 10 11 func TestRegistryBasicUsage(t *testing.T) { 12 13 if testing.Short() { 14 t.SkipNow() 15 } 16 17 // two image repository, local and remote 18 image := registry.DockerImage("alpine:3.6") 19 image0 := registry.DockerImage("localhost:5000/tasting/alpine:3.6") 20 21 // connecting registries 22 repo, tag, err := image.Connect() 23 require.NoError(t, err) 24 repo0, tag0, err := image0.Connect() 25 require.NoError(t, err) 26 27 assert.Equal(t, tag, tag0) 28 assert.Equal(t, tag, "3.6") 29 30 // get manifest from remote 31 manifest, err := repo.GetManifest(tag) 32 require.NoError(t, err) 33 34 // transmit layers 35 for _, layer := range manifest.FSLayers { 36 37 func() { 38 39 pipeR, pipeW, err := os.Pipe() 40 require.NoError(t, err) 41 defer pipeR.Close() 42 43 go func() { 44 defer pipeW.Close() 45 46 err = repo.GetLayer(layer.BlobSum, pipeW) 47 require.NoError(t, err) 48 }() 49 50 err = repo0.PutLayer(layer.BlobSum, pipeR) 51 require.NoError(t, err) 52 }() 53 } 54 55 // put manifest to local 56 err = repo0.PutManifest(tag, manifest) 57 require.NoError(t, err) 58 }