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 }