package registry // import ( // "crypto/rand" // "encoding/hex" // "github.com/dotcloud/docker" // "github.com/dotcloud/docker/auth" // "io/ioutil" // "os" // "path" // "testing" // ) // func newTestRuntime() (*Runtime, error) { // root, err := ioutil.TempDir("", "docker-test") // if err != nil { // return nil, err // } // if err := os.Remove(root); err != nil { // return nil, err // } // if err := os.MkdirAll(root, 0700); err != nil && !os.IsExist(err) { // return nil, err // } // return runtime, nil // } // func TestPull(t *testing.T) { // os.Setenv("DOCKER_INDEX_URL", "") // runtime, err := newTestRuntime() // if err != nil { // t.Fatal(err) // } // defer nuke(runtime) // err = runtime.graph.PullRepository(ioutil.Discard, "busybox", "", runtime.repositories, nil) // if err != nil { // t.Fatal(err) // } // img, err := runtime.repositories.LookupImage("busybox") // if err != nil { // t.Fatal(err) // } // // Try to run something on this image to make sure the layer's been downloaded properly. // config, _, err := docker.ParseRun([]string{img.Id, "echo", "Hello World"}, runtime.capabilities) // if err != nil { // t.Fatal(err) // } // b := NewBuilder(runtime) // container, err := b.Create(config) // if err != nil { // t.Fatal(err) // } // if err := container.Start(); err != nil { // t.Fatal(err) // } // if status := container.Wait(); status != 0 { // t.Fatalf("Expected status code 0, found %d instead", status) // } // } // func TestPullTag(t *testing.T) { // os.Setenv("DOCKER_INDEX_URL", "") // runtime, err := newTestRuntime() // if err != nil { // t.Fatal(err) // } // defer nuke(runtime) // err = runtime.graph.PullRepository(ioutil.Discard, "ubuntu", "12.04", runtime.repositories, nil) // if err != nil { // t.Fatal(err) // } // _, err = runtime.repositories.LookupImage("ubuntu:12.04") // if err != nil { // t.Fatal(err) // } // img2, err := runtime.repositories.LookupImage("ubuntu:12.10") // if img2 != nil { // t.Fatalf("Expected nil image but found %v instead", img2.Id) // } // } // func login(runtime *Runtime) error { // authConfig := auth.NewAuthConfig("unittester", "surlautrerivejetattendrai", "noise+unittester@dotcloud.com", runtime.root) // runtime.authConfig = authConfig // _, err := auth.Login(authConfig) // return err // } // func TestPush(t *testing.T) { // os.Setenv("DOCKER_INDEX_URL", "https://indexstaging-docker.dotcloud.com") // defer os.Setenv("DOCKER_INDEX_URL", "") // runtime, err := newTestRuntime() // if err != nil { // t.Fatal(err) // } // defer nuke(runtime) // err = login(runtime) // if err != nil { // t.Fatal(err) // } // err = runtime.graph.PullRepository(ioutil.Discard, "joffrey/busybox", "", runtime.repositories, nil) // if err != nil { // t.Fatal(err) // } // tokenBuffer := make([]byte, 16) // _, err = rand.Read(tokenBuffer) // if err != nil { // t.Fatal(err) // } // token := hex.EncodeToString(tokenBuffer)[:29] // config, _, err := ParseRun([]string{"joffrey/busybox", "touch", "/" + token}, runtime.capabilities) // if err != nil { // t.Fatal(err) // } // b := NewBuilder(runtime) // container, err := b.Create(config) // if err != nil { // t.Fatal(err) // } // if err := container.Start(); err != nil { // t.Fatal(err) // } // if status := container.Wait(); status != 0 { // t.Fatalf("Expected status code 0, found %d instead", status) // } // img, err := b.Commit(container, "unittester/"+token, "", "", "", nil) // if err != nil { // t.Fatal(err) // } // repo := runtime.repositories.Repositories["unittester/"+token] // err = runtime.graph.PushRepository(ioutil.Discard, "unittester/"+token, repo, runtime.authConfig) // if err != nil { // t.Fatal(err) // } // // Remove image so we can pull it again // if err := runtime.graph.Delete(img.Id); err != nil { // t.Fatal(err) // } // err = runtime.graph.PullRepository(ioutil.Discard, "unittester/"+token, "", runtime.repositories, runtime.authConfig) // if err != nil { // t.Fatal(err) // } // layerPath, err := img.layer() // if err != nil { // t.Fatal(err) // } // if _, err := os.Stat(path.Join(layerPath, token)); err != nil { // t.Fatalf("Error while trying to retrieve token file: %v", err) // } // }