github.com/econnell/deis@v1.5.1/router/tests/router_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  
    13  func TestRouter(t *testing.T) {
    14  	var err error
    15  	setkeys := []string{
    16  		"/deis/controller/host",
    17  		"/deis/controller/port",
    18  		"/deis/builder/host",
    19  		"/deis/builder/port",
    20  		"/deis/store/gateway/host",
    21  		"/deis/store/gateway/port",
    22  	}
    23  	setdir := []string{
    24  		"/deis/controller",
    25  		"/deis/router",
    26  		"/deis/database",
    27  		"/deis/services",
    28  		"/deis/builder",
    29  		"/deis/domains",
    30  		"/deis/store",
    31  	}
    32  	tag, etcdPort := utils.BuildTag(), utils.RandomPort()
    33  	imageName := utils.ImagePrefix() + "router" + ":" + tag
    34  	etcdName := "deis-etcd-" + tag
    35  	cli, stdout, stdoutPipe := dockercli.NewClient()
    36  	dockercli.RunTestEtcd(t, etcdName, etcdPort)
    37  	defer cli.CmdRm("-f", etcdName)
    38  	handler := etcdutils.InitEtcd(setdir, setkeys, etcdPort)
    39  	etcdutils.PublishEtcd(t, handler)
    40  	host, port := utils.HostAddress(), utils.RandomPort()
    41  	fmt.Printf("--- Run %s at %s:%s\n", imageName, host, port)
    42  	name := "deis-router-" + tag
    43  	go func() {
    44  		_ = cli.CmdRm("-f", name)
    45  		err = dockercli.RunContainer(cli,
    46  			"--name", name,
    47  			"--rm",
    48  			"-p", port+":80",
    49  			"-p", utils.RandomPort()+":2222",
    50  			"-e", "EXTERNAL_PORT="+port,
    51  			"-e", "HOST="+host,
    52  			"-e", "ETCD_PORT="+etcdPort,
    53  			"-e", "LOG=debug",
    54  			imageName)
    55  	}()
    56  	dockercli.PrintToStdout(t, stdout, stdoutPipe, "deis-router running")
    57  	if err != nil {
    58  		t.Fatal(err)
    59  	}
    60  	// FIXME: nginx needs a couple seconds to wake up here
    61  	// FIXME: Wait until etcd keys are published
    62  	time.Sleep(5000 * time.Millisecond)
    63  	dockercli.DeisServiceTest(t, name, port, "http")
    64  	etcdutils.VerifyEtcdValue(t, "/deis/router/gzip", "on", etcdPort)
    65  	etcdutils.VerifyEtcdValue(t,
    66  		"/deis/router/hosts/"+host,
    67  		fmt.Sprintf("%s:%s", host, port),
    68  		etcdPort)
    69  	_ = cli.CmdRm("-f", name)
    70  }