Ejemplo n.º 1
0
// TestRuby connects to a cluster with ruby.
func TestRuby(t *testing.T) {
	t.Skip("skip until docker issues fixed")

	l := MustStartLocal(t)
	defer l.AssertAndStop(t)

	addr := l.Nodes[0].PGAddr()

	client := cluster.NewDockerClient()
	containerConfig := dockerclient.ContainerConfig{
		Image: "cockroachdb/postgres-test:ruby",
		Env: []string{
			fmt.Sprintf("PGHOST=%s", addr.IP),
			fmt.Sprintf("PGPORT=%d", addr.Port),
			"PGSSLCERT=/certs/node.client.crt",
			"PGSSLKEY=/certs/node.client.key",
		},
		Cmd: []string{"ruby", "-e", ruby},
	}
	if err := client.PullImage(containerConfig.Image, nil); err != nil {
		t.Fatal(err)
	}
	id, err := client.CreateContainer(&containerConfig, "", nil)
	if err != nil {
		t.Fatal(err)
	}
	defer client.RemoveContainer(id, false, false)

	hostConfig := dockerclient.HostConfig{
		Binds:       []string{fmt.Sprintf("%s:%s", l.CertsDir, "/certs")},
		NetworkMode: "host",
	}
	if err := client.StartContainer(id, &hostConfig); err != nil {
		t.Fatal(err)
	}
	wr := <-client.Wait(id)
	if wr.Error != nil {
		t.Fatal(wr.Error)
	}
	if wr.ExitCode != 0 {
		rc, err := client.ContainerLogs(id, &dockerclient.LogOptions{
			Stdout: true,
			Stderr: true,
		})
		if err != nil {
			t.Fatal(err)
		}
		b, err := ioutil.ReadAll(rc)
		rc.Close()
		if err != nil {
			t.Log(err)
		} else {
			t.Log(string(b))
		}
		t.Fatalf("exit code: %d", wr.ExitCode)
	}
}
Ejemplo n.º 2
0
func testDocker(t *testing.T, tag string, cmd []string) (result dockerclient.WaitResult, logs string) {
	SkipUnlessLocal(t)
	l := StartCluster(t).(*cluster.LocalCluster)

	defer l.AssertAndStop(t)

	addr := l.Nodes[0].PGAddr()

	client := cluster.NewDockerClient()
	containerConfig := dockerclient.ContainerConfig{
		Image: "cockroachdb/postgres-test:" + tag,
		Env: []string{
			fmt.Sprintf("PGHOST=%s", addr.IP),
			fmt.Sprintf("PGPORT=%d", addr.Port),
			"PGSSLCERT=/certs/node.client.crt",
			"PGSSLKEY=/certs/node.client.key",
		},
		Cmd: cmd,
	}
	if err := client.PullImage(containerConfig.Image, nil); err != nil {
		t.Fatal(err)
	}
	id, err := client.CreateContainer(&containerConfig, "", nil)
	if err != nil {
		t.Fatal(err)
	}
	defer client.RemoveContainer(id, false, false)

	hostConfig := dockerclient.HostConfig{
		Binds:       []string{fmt.Sprintf("%s:%s", l.CertsDir, "/certs")},
		NetworkMode: "host",
	}
	if err := client.StartContainer(id, &hostConfig); err != nil {
		t.Fatal(err)
	}
	wr := <-client.Wait(id)
	if wr.ExitCode != 0 {
		rc, err := client.ContainerLogs(id, &dockerclient.LogOptions{
			Stdout: true,
			Stderr: true,
		})
		if err != nil {
			t.Fatal(err)
		}
		b, err := ioutil.ReadAll(rc)
		rc.Close()
		if err != nil {
			t.Error(err)
		}
		logs = string(b)
	}
	return wr, logs
}