github.com/spg/deis@v1.7.3/controller/tests/controller_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/mock" 11 "github.com/deis/deis/tests/utils" 12 ) 13 14 func TestController(t *testing.T) { 15 var err error 16 setkeys := []string{ 17 "/deis/registry/protocol", 18 "/deis/registry/host", 19 "/deis/registry/port", 20 "/deis/platform/domain", 21 } 22 setdir := []string{ 23 "/deis/controller", 24 "/deis/database", 25 "/deis/registry", 26 "/deis/domains", 27 "/deis/scheduler", 28 } 29 tag, etcdPort := utils.BuildTag(), utils.RandomPort() 30 imageName := utils.ImagePrefix() + "controller" + ":" + tag 31 32 //start etcd container 33 etcdName := "deis-etcd-" + tag 34 cli, stdout, stdoutPipe := dockercli.NewClient() 35 dockercli.RunTestEtcd(t, etcdName, etcdPort) 36 defer cli.CmdRm("-f", etcdName) 37 38 handler := etcdutils.InitEtcd(setdir, setkeys, etcdPort) 39 etcdutils.PublishEtcd(t, handler) 40 mock.RunMockDatabase(t, tag, etcdPort, utils.RandomPort()) 41 defer cli.CmdRm("-f", "deis-test-database-"+tag) 42 host, port := utils.HostAddress(), utils.RandomPort() 43 fmt.Printf("--- Run %s at %s:%s\n", imageName, host, port) 44 name := "deis-controller-" + tag 45 defer cli.CmdRm("-f", name) 46 go func() { 47 cli.CmdRm("-f", name) 48 err = dockercli.RunContainer(cli, 49 "--name", name, 50 "--rm", 51 "-v", "/var/run/fleet.sock:/var/run/fleet.sock", 52 "-p", port+":8000", 53 "-e", "EXTERNAL_PORT="+port, 54 "-e", "HOST="+host, 55 "-e", "ETCD_PORT="+etcdPort, 56 imageName) 57 }() 58 dockercli.PrintToStdout(t, stdout, stdoutPipe, "Booting") 59 if err != nil { 60 t.Fatal(err) 61 } 62 // FIXME: Wait until etcd keys are published 63 time.Sleep(5000 * time.Millisecond) 64 dockercli.DeisServiceTest(t, name, port, "http") 65 etcdutils.VerifyEtcdValue(t, "/deis/controller/host", host, etcdPort) 66 etcdutils.VerifyEtcdValue(t, "/deis/controller/port", port, etcdPort) 67 }