github.com/techend/deis@v1.0.1-0.20141111224634-e0eee0392b8a/database/tests/database_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 TestDatabase(t *testing.T) {
    15  	var err error
    16  	tag, etcdPort := utils.BuildTag(), utils.RandomPort()
    17  	cli, stdout, stdoutPipe := dockercli.NewClient()
    18  
    19  	// start etcd container
    20  	etcdName := "deis-etcd-" + tag
    21  	dockercli.RunTestEtcd(t, etcdName, etcdPort)
    22  	defer cli.CmdRm("-f", etcdName)
    23  
    24  	// run mock ceph containers
    25  	cephName := "deis-ceph-" + tag
    26  	mock.RunMockCeph(t, cephName, cli, etcdPort)
    27  	defer cli.CmdRm("-f", "-v", cephName+"-monitor")
    28  	defer cli.CmdRm("-f", "-v", cephName+"-daemon")
    29  	defer cli.CmdRm("-f", cephName+"-metadata")
    30  	defer cli.CmdRm("-f", cephName+"-gateway")
    31  
    32  	// run database container
    33  	host, port := utils.HostAddress(), utils.RandomPort()
    34  	fmt.Printf("--- Run deis/database:%s at %s:%s\n", tag, host, port)
    35  	name := "deis-database-" + tag
    36  	defer cli.CmdRm("-f", name)
    37  	go func() {
    38  		_ = cli.CmdRm("-f", name)
    39  		err = dockercli.RunContainer(cli,
    40  			"--name", name,
    41  			"--rm",
    42  			"-p", port+":5432",
    43  			"-e", "EXTERNAL_PORT="+port,
    44  			"-e", "HOST="+host,
    45  			"-e", "ETCD_PORT="+etcdPort,
    46  			"deis/database:"+tag)
    47  	}()
    48  	dockercli.PrintToStdout(t, stdout, stdoutPipe, "database: postgres is running...")
    49  	if err != nil {
    50  		t.Fatal(err)
    51  	}
    52  	// FIXME: Wait until etcd keys are published
    53  	time.Sleep(5000 * time.Millisecond)
    54  	dockercli.DeisServiceTest(t, name, port, "tcp")
    55  	etcdutils.VerifyEtcdValue(t, "/deis/database/host", host, etcdPort)
    56  	etcdutils.VerifyEtcdValue(t, "/deis/database/port", port, etcdPort)
    57  }