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 }