github.com/robszumski/deis@v1.4.1/tests/mock/mock.go (about)

     1  // Package mock provides mock objects and setup for Deis tests.
     2  package mock
     3  
     4  import (
     5  	"fmt"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/deis/deis/tests/dockercli"
    10  	"github.com/deis/deis/tests/etcdutils"
    11  	"github.com/deis/deis/tests/utils"
    12  
    13  	"github.com/docker/docker/api/client"
    14  )
    15  
    16  // RunMockDatabase starts a mock postgresql database for testing.
    17  func RunMockDatabase(t *testing.T, tag string, etcdPort string, dbPort string) {
    18  	var err error
    19  	cli, stdout, stdoutPipe := dockercli.NewClient()
    20  	done := make(chan bool, 1)
    21  	dbImage := "deis/test-postgresql:latest"
    22  	ipaddr := utils.HostAddress()
    23  	done <- true
    24  	go func() {
    25  		<-done
    26  		err = dockercli.RunContainer(cli,
    27  			"--name", "deis-test-database-"+tag,
    28  			"--rm",
    29  			"-p", dbPort+":5432",
    30  			"-e", "EXTERNAL_PORT="+dbPort,
    31  			"-e", "HOST="+ipaddr,
    32  			"-e", "USER=deis",
    33  			"-e", "DB=deis",
    34  			"-e", "PASS=deis",
    35  			dbImage)
    36  	}()
    37  	time.Sleep(1000 * time.Millisecond)
    38  	dockercli.PrintToStdout(t, stdout, stdoutPipe, "Initialization complete.")
    39  	setkeys := []string{
    40  		"/deis/database/user",
    41  		"/deis/database/password",
    42  		"/deis/database/name",
    43  	}
    44  	setdir := []string{}
    45  	dbhandler := etcdutils.InitEtcd(setdir, setkeys, etcdPort)
    46  	etcdutils.PublishEtcd(t, dbhandler)
    47  	etcdutils.SetEtcd(t,
    48  		[]string{"/deis/database/host", "/deis/database/port", "/deis/database/engine"},
    49  		[]string{ipaddr, dbPort, "postgresql_psycopg2"}, dbhandler.C)
    50  	if err != nil {
    51  		t.Fatal(err)
    52  	}
    53  }
    54  
    55  // RunMockCeph runs a container used to mock a Ceph storage cluster
    56  func RunMockCeph(t *testing.T, name string, cli *client.DockerCli, etcdPort string) {
    57  
    58  	etcdutils.SetSingle(t, "/deis/store/hosts/"+utils.HostAddress(), utils.HostAddress(), etcdPort)
    59  	var err error
    60  	cli, stdout, stdoutPipe := dockercli.NewClient()
    61  	ipaddr := utils.HostAddress()
    62  	fmt.Printf("--- Running deis/mock-store at %s\n", ipaddr)
    63  	done := make(chan bool, 1)
    64  	go func() {
    65  		done <- true
    66  		err = dockercli.RunContainer(cli,
    67  			"--name", name,
    68  			"--rm",
    69  			"-e", "HOST="+ipaddr,
    70  			"-e", "ETCD_PORT="+etcdPort,
    71  			"--net=host",
    72  			"deis/mock-store:latest")
    73  	}()
    74  	dockercli.PrintToStdout(t, stdout, stdoutPipe, "deis-store-gateway running...")
    75  	if err != nil {
    76  		t.Fatal(err)
    77  	}
    78  }