func (s *S) TestProvisionerPlatformAdd(c *gocheck.C) { var requests []*http.Request server, err := dtesting.NewServer("127.0.0.1:0", nil, func(r *http.Request) { requests = append(requests, r) }) c.Assert(err, gocheck.IsNil) defer server.Stop() config.Set("docker:registry", "localhost:3030") defer config.Unset("docker:registry") var storage cluster.MapStorage storage.StoreImage("localhost:3030/base", server.URL()) cmutex.Lock() oldDockerCluster := dCluster dCluster, _ = cluster.New(nil, &storage, cluster.Node{Address: server.URL()}) cmutex.Unlock() defer func() { cmutex.Lock() dCluster = oldDockerCluster cmutex.Unlock() }() args := make(map[string]string) args["dockerfile"] = "http://localhost/Dockerfile" p := dockerProvisioner{} err = p.PlatformAdd("test", args, bytes.NewBuffer(nil)) c.Assert(err, gocheck.IsNil) c.Assert(requests, gocheck.HasLen, 2) queryString := requests[0].URL.Query() c.Assert(queryString.Get("t"), gocheck.Equals, assembleImageName("test")) c.Assert(queryString.Get("remote"), gocheck.Equals, "http://localhost/Dockerfile") }
func (s *S) TestPushImage(c *gocheck.C) { var request *http.Request server, err := dtesting.NewServer("127.0.0.1:0", nil, func(r *http.Request) { request = r }) c.Assert(err, gocheck.IsNil) defer server.Stop() config.Set("docker:registry", "localhost:3030") defer config.Unset("docker:registry") var storage cluster.MapStorage storage.StoreImage("localhost:3030/base", server.URL()) cmutex.Lock() oldDockerCluster := dCluster dCluster, _ = cluster.New(nil, &storage, cluster.Node{Address: server.URL()}) cmutex.Unlock() defer func() { cmutex.Lock() defer cmutex.Unlock() dCluster = oldDockerCluster }() err = newImage("localhost:3030/base", "http://index.docker.io") c.Assert(err, gocheck.IsNil) err = pushImage("localhost:3030/base") c.Assert(err, gocheck.IsNil) c.Assert(request.URL.Path, gocheck.Matches, ".*/images/localhost:3030/base/push$") }
func (s *S) TestProvisionerPlatformRemove(c *gocheck.C) { registryServer := httptest.NewServer(nil) u, _ := url.Parse(registryServer.URL) config.Set("docker:registry", u.Host) defer config.Unset("docker:registry") var requests []*http.Request server, err := dtesting.NewServer("127.0.0.1:0", nil, func(r *http.Request) { requests = append(requests, r) }) c.Assert(err, gocheck.IsNil) defer server.Stop() var storage cluster.MapStorage imageName := assembleImageName("test") storage.StoreImage(imageName, server.URL()) cmutex.Lock() oldDockerCluster := dCluster dCluster, _ = cluster.New(nil, &storage, cluster.Node{Address: server.URL()}) cmutex.Unlock() defer func() { cmutex.Lock() dCluster = oldDockerCluster cmutex.Unlock() }() p := dockerProvisioner{} err = p.PlatformRemove("test") c.Assert(err, gocheck.IsNil) c.Assert(strings.Contains(requests[0].URL.RequestURI(), "tsuru/test"), gocheck.Equals, true) }