github.com/spg/deis@v1.7.3/builder/tests/builder_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/deis/deis/tests/dockercli"
     9  	"github.com/deis/deis/tests/etcdutils"
    10  	"github.com/deis/deis/tests/utils"
    11  
    12  	"io/ioutil"
    13  	"os"
    14  )
    15  
    16  func TestBuilder(t *testing.T) {
    17  	var err error
    18  	var errfile error
    19  	setkeys := []string{
    20  		"/deis/registry/protocol",
    21  		"/deis/registry/host",
    22  		"/deis/registry/port",
    23  		"/deis/cache/host",
    24  		"/deis/cache/port",
    25  		"/deis/controller/protocol",
    26  		"/deis/controller/host",
    27  		"/deis/controller/port",
    28  		"/deis/controller/builderKey",
    29  	}
    30  	setdir := []string{
    31  		"/deis/controller",
    32  		"/deis/cache",
    33  		"/deis/database",
    34  		"/deis/registry",
    35  		"/deis/domains",
    36  		"/deis/services",
    37  	}
    38  	setproxy := []byte("HTTP_PROXY=\nhttp_proxy=\n")
    39  
    40  	tmpfile, errfile := ioutil.TempFile("/tmp", "deis-test-")
    41  	if errfile != nil {
    42  		t.Fatal(errfile)
    43  	}
    44  	ioutil.WriteFile(tmpfile.Name(), setproxy, 0644)
    45  	defer os.Remove(tmpfile.Name())
    46  
    47  	tag, etcdPort := utils.BuildTag(), utils.RandomPort()
    48  	imageName := utils.ImagePrefix() + "builder" + ":" + tag
    49  	etcdName := "deis-etcd-" + tag
    50  	cli, stdout, stdoutPipe := dockercli.NewClient()
    51  	dockercli.RunTestEtcd(t, etcdName, etcdPort)
    52  	defer cli.CmdRm("-f", etcdName)
    53  	handler := etcdutils.InitEtcd(setdir, setkeys, etcdPort)
    54  	etcdutils.PublishEtcd(t, handler)
    55  	host, port := utils.HostAddress(), utils.RandomPort()
    56  	fmt.Printf("--- Run %s at %s:%s\n", imageName, host, port)
    57  	name := "deis-builder-" + tag
    58  	defer cli.CmdRm("-f", "-v", name)
    59  	go func() {
    60  		_ = cli.CmdRm("-f", "-v", name)
    61  		err = dockercli.RunContainer(cli,
    62  			"--name", name,
    63  			"--rm",
    64  			"-p", port+":22",
    65  			"-e", "PORT=22",
    66  			"-e", "HOST="+host,
    67  			"-e", "ETCD_PORT="+etcdPort,
    68  			"-e", "EXTERNAL_PORT="+port,
    69  			"--privileged",
    70  			"-v", tmpfile.Name()+":/etc/environment_proxy",
    71  			imageName)
    72  	}()
    73  	dockercli.PrintToStdout(t, stdout, stdoutPipe, "deis-builder running")
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  	// FIXME: builder needs a few seconds to wake up here!
    78  	// FIXME: Wait until etcd keys are published
    79  	time.Sleep(5000 * time.Millisecond)
    80  	dockercli.DeisServiceTest(t, name, port, "tcp")
    81  	etcdutils.VerifyEtcdValue(t, "/deis/builder/host", host, etcdPort)
    82  	etcdutils.VerifyEtcdValue(t, "/deis/builder/port", port, etcdPort)
    83  }