// RunEtcdTest starts an etcd docker container for testing. func RunEtcdTest(t *testing.T, uid string, port string) { var err error cli, stdout, stdoutPipe := GetNewClient() etcdImage := "deis/test-etcd:latest" done2 := make(chan bool, 1) go func() { done2 <- true ipaddr := utils.GetHostIPAddress() err = RunContainer(cli, "--name", "deis-etcd-"+uid, "--rm", "-p", port+":"+port, "-e", "HOST_IP="+ipaddr, "-e", "ETCD_ADDR="+ipaddr+":"+port, etcdImage) }() go func() { <-done2 time.Sleep(5000 * time.Millisecond) if err := CloseWrap(stdout, stdoutPipe); err != nil { t.Fatalf("runEtcdTest %s", err) } }() time.Sleep(1000 * time.Millisecond) PrintToStdout(t, stdout, stdoutPipe, "pulling etcd") if err != nil { t.Fatal(err) } }
func runDeisBuilderTest( t *testing.T, testSessionUID string, etcdPort string, servicePort string) { cli, stdout, stdoutPipe := dockercliutils.GetNewClient() done := make(chan bool, 1) err := dockercliutils.BuildImage(t, "../", "deis/builder:"+testSessionUID) if err != nil { t.Fatal(err) } dockercliutils.RunDeisDataTest(t, "--name", "deis-builder-data", "-v", "/var/lib/docker", "deis/base", "/bin/true") //docker run --name deis-builder -p 2223:22 -e PUBLISH=22 // -e HOST=${COREOS_PRIVATE_IPV4} -e PORT=2223 // --volumes-from deis-builder-data --privileged deis/builder ipaddr := utils.GetHostIPAddress() done <- true go func() { <-done err = dockercliutils.RunContainer(cli, "--name", "deis-builder-"+testSessionUID, "--rm", "-p", servicePort+":22", "-e", "PUBLISH=22", "-e", "STORAGE_DRIVER=devicemapper", "-e", "HOST="+ipaddr, "-e", "ETCD_PORT="+etcdPort, "-e", "PORT="+servicePort, "--volumes-from", "deis-builder-data", "--privileged", "deis/builder:"+testSessionUID) }() time.Sleep(5000 * time.Millisecond) dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "deis-builder running") if err != nil { t.Fatal(err) } }
func runDeisCacheTest(t *testing.T, testSessionUID string, etcdPort string, servicePort string) { cli, stdout, stdoutPipe := dockercliutils.GetNewClient() done := make(chan bool, 1) err := dockercliutils.BuildImage(t, "../", "deis/cache:"+testSessionUID) if err != nil { t.Fatal(err) } ipaddr := utils.GetHostIPAddress() done <- true go func() { <-done err = dockercliutils.RunContainer(cli, "--name", "deis-cache-"+testSessionUID, "--rm", "-p", servicePort+":6379", "-e", "PUBLISH="+servicePort, "-e", "HOST="+ipaddr, "-e", "ETCD_PORT="+etcdPort, "deis/cache:"+testSessionUID) }() dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "started") if err != nil { t.Fatal(err) } }
func runDeisRegistryTest( t *testing.T, testSessionUID string, etcdPort string, servicePort string) { cli, stdout, stdoutPipe := dockercliutils.GetNewClient() done := make(chan bool, 1) err := dockercliutils.BuildImage(t, "../", "deis/registry:"+testSessionUID) if err != nil { t.Fatal(err) } dockercliutils.RunDeisDataTest(t, "--name", "deis-registry-data", "-v", "/data", "deis/base", "/bin/true") ipaddr := utils.GetHostIPAddress() done <- true go func() { <-done err = dockercliutils.RunContainer(cli, "--name", "deis-registry-"+testSessionUID, "--rm", "-p", servicePort+":5000", "-e", "PUBLISH="+servicePort, "-e", "HOST="+ipaddr, "-e", "ETCD_PORT="+etcdPort, "--volumes-from", "deis-registry-data", "deis/registry:"+testSessionUID) }() time.Sleep(2000 * time.Millisecond) dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "Booting") if err != nil { t.Fatal(err) } }
func runDeisLoggerTest( t *testing.T, testSessionUID string, etcdPort string, servicePort string) { cli, stdout, stdoutPipe := dockercliutils.GetNewClient() done := make(chan bool, 1) err := dockercliutils.BuildImage(t, "../", "deis/logger:"+testSessionUID) if err != nil { t.Fatal(err) } dockercliutils.RunDeisDataTest(t, "--name", "deis-logger-data", "-v", "/var/log/deis", "deis/base", "true") ipaddr := utils.GetHostIPAddress() done <- true go func() { <-done err = dockercliutils.RunContainer(cli, "--name", "deis-logger-"+testSessionUID, "--rm", "-p", servicePort+":514/udp", "-e", "PUBLISH="+servicePort, "-e", "HOST="+ipaddr, "-e", "ETCD_PORT="+etcdPort, "--volumes-from", "deis-logger-data", "deis/logger:"+testSessionUID) }() dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "deis-logger running") if err != nil { t.Fatal(err) } }
// RunMockDatabase starts a mock postgresql database for testing. func RunMockDatabase(t *testing.T, uid string, etcdPort string, dbPort string) { var err error cli, stdout, stdoutPipe := dockercliutils.GetNewClient() done := make(chan bool, 1) var imageID string var imageTag string ipaddr := utils.GetHostIPAddress() fmt.Println("starting Mock Database") done <- true go func() { <-done dockercliutils.PullImage(t, cli, "paintedfox/postgresql") imageID = dockercliutils.GetImageID(t, "paintedfox/postgresql") imageTag = "deis/test-database:" + uid cli.CmdTag(imageID, imageTag) err = dockercliutils.RunContainer(cli, "--name", "deis-test-database-"+uid, "--rm", "-p", dbPort+":5432", "-e", "PUBLISH="+dbPort, "-e", "HOST="+ipaddr, "-e", "USER=deis", "-e", "DB=deis", "-e", "PASS=deis", "deis/test-database:"+uid) }() time.Sleep(1000 * time.Millisecond) dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "Starting") // docker run --name="deis-database" -p -e PUBLISH=5432 // -e HOST=172.17.8.100 -e USER="******" -e DB="deis" // -e PASS="******" deis/database setkeys := []string{"/deis/database/user", "/deis/database/password", "/deis/database/name"} setdir := []string{} dbhandler := etcdutils.InitetcdValues(setdir, setkeys, etcdPort) etcdutils.Publishvalues(t, dbhandler) etcdutils.SetEtcdValues(t, []string{"/deis/database/host", "/deis/database/port", "/deis/database/engine"}, []string{ipaddr, dbPort, "postgresql_psycopg2"}, dbhandler.C) if err != nil { t.Fatal(err) } }
func runDeisControllerTest( t *testing.T, testID string, etcdPort string, servicePort string) { var err error cli, stdout, stdoutPipe := dockercli.GetNewClient() go func() { err = dockercli.RunContainer(cli, "--name", "deis-controller-"+testID, "--rm", "-p", servicePort+":8000", "-e", "PUBLISH="+servicePort, "-e", "HOST="+utils.GetHostIPAddress(), "-e", "ETCD_PORT="+etcdPort, "deis/controller:"+testID) }() dockercli.PrintToStdout(t, stdout, stdoutPipe, "Booting") if err != nil { t.Fatal(err) } }
func runDeisCacheTest( t *testing.T, testID string, etcdPort string, servicePort string) { var err error cli, stdout, stdoutPipe := dockercliutils.GetNewClient() go func() { err = dockercliutils.RunContainer(cli, "--name", "deis-cache-"+testID, "--rm", "-p", servicePort+":6379", "-e", "PUBLISH="+servicePort, "-e", "HOST="+utils.GetHostIPAddress(), "-e", "ETCD_PORT="+etcdPort, "deis/cache:"+testID) }() dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "started") if err != nil { t.Fatal(err) } }
func runDeisDatabaseTest( t *testing.T, testID string, etcdPort string, servicePort string) { var err error dockercliutils.RunDeisDataTest(t, "--name", "deis-database-data", "-v", "/var/lib/postgresql", "deis/base", "true") cli, stdout, stdoutPipe := dockercliutils.GetNewClient() go func() { err = dockercliutils.RunContainer(cli, "--name", "deis-database-"+testID, "--rm", "-p", servicePort+":5432", "-e", "PUBLISH="+servicePort, "-e", "HOST="+utils.GetHostIPAddress(), "-e", "ETCD_PORT="+etcdPort, "--volumes-from", "deis-database-data", "deis/database:"+testID) }() dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "deis-database running") if err != nil { t.Fatal(err) } }
func runDeisLoggerTest( t *testing.T, testID string, etcdPort string, servicePort string) { var err error dockercli.RunDeisDataTest(t, "--name", "deis-logger-data", "-v", "/var/log/deis", "deis/base", "/bin/true") cli, stdout, stdoutPipe := dockercli.GetNewClient() go func() { err = dockercli.RunContainer(cli, "--name", "deis-logger-"+testID, "--rm", "-p", servicePort+":514/udp", "-e", "PUBLISH="+servicePort, "-e", "HOST="+utils.GetHostIPAddress(), "-e", "ETCD_PORT="+etcdPort, "--volumes-from", "deis-logger-data", "deis/logger:"+testID) }() dockercli.PrintToStdout(t, stdout, stdoutPipe, "deis-logger running") if err != nil { t.Fatal(err) } }
// RunMockDatabase starts a mock postgresql database for testing. func RunMockDatabase(t *testing.T, uid string, etcdPort string, dbPort string) { var err error cli, stdout, stdoutPipe := dockercli.GetNewClient() done := make(chan bool, 1) dbImage := "paintedfox/postgresql:latest" ipaddr := utils.GetHostIPAddress() done <- true go func() { <-done err = dockercli.RunContainer(cli, "--name", "deis-test-database-"+uid, "--rm", "-p", dbPort+":5432", "-e", "PUBLISH="+dbPort, "-e", "HOST="+ipaddr, "-e", "USER=deis", "-e", "DB=deis", "-e", "PASS=deis", dbImage) }() time.Sleep(1000 * time.Millisecond) dockercli.PrintToStdout(t, stdout, stdoutPipe, "Starting") setkeys := []string{ "/deis/database/user", "/deis/database/password", "/deis/database/name", } setdir := []string{} dbhandler := etcdutils.InitetcdValues(setdir, setkeys, etcdPort) etcdutils.Publishvalues(t, dbhandler) etcdutils.SetEtcdValues(t, []string{"/deis/database/host", "/deis/database/port", "/deis/database/engine"}, []string{ipaddr, dbPort, "postgresql_psycopg2"}, dbhandler.C) if err != nil { t.Fatal(err) } }
func runDeisBuilderTest( t *testing.T, testID string, etcdPort string, servicePort string) { var err error dockercli.RunDeisDataTest(t, "--name", "deis-builder-data", "-v", "/var/lib/docker", "deis/base", "true") cli, stdout, stdoutPipe := dockercli.GetNewClient() go func() { err = dockercli.RunContainer(cli, "--name", "deis-builder-"+testID, "--rm", "-p", servicePort+":22", "-e", "PUBLISH=22", "-e", "STORAGE_DRIVER=aufs", "-e", "HOST="+utils.GetHostIPAddress(), "-e", "ETCD_PORT="+etcdPort, "-e", "PORT="+servicePort, "--volumes-from", "deis-builder-data", "--privileged", "deis/builder:"+testID) }() dockercli.PrintToStdout(t, stdout, stdoutPipe, "deis-builder running") if err != nil { t.Fatal(err) } }
func getetcdClient(port string) *etcd.Client { IPAddress := utils.GetHostIPAddress() machines := []string{"http://" + IPAddress + ":" + port} c := etcd.NewClient(machines) return c }