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  }