예제 #1
0
func TestWriteProxyScript(t *testing.T) {
	// temporary directory to store file
	dir, _ := ioutil.TempDir("", "drone-test-")
	defer os.RemoveAll(dir)

	// fake service container that we'll assume was part of the yaml
	// and should be attached to the build container.
	c := docker.Container{
		NetworkSettings: &docker.NetworkSettings{
			IPAddress: "172.1.4.5",
			Ports: map[docker.Port][]docker.PortBinding{
				docker.NewPort("tcp", "3306"): nil,
			},
		},
	}

	// this should generate the following proxy file
	p := proxy.Proxy{}
	p.Set("3306", "172.1.4.5")
	want := p.String()

	b := Builder{}
	b.services = append(b.services, &c)
	b.writeProxyScript(dir)

	// persist a dummy proxy script to disk
	got, err := ioutil.ReadFile(filepath.Join(dir, "proxy.sh"))
	if err != nil {
		t.Errorf("Expected proxy.sh file saved to disk")
	}

	if string(got) != want {
		t.Errorf("Expected proxy.sh value saved as %s, got %s", want, got)
	}
}
예제 #2
0
// writeProxyScript is a helper function that
// will generate the proxy.sh file in the builder's
// temp directory to be added to the Image.
func (b *Builder) writeProxyScript(dir string) error {
	var proxyfile = proxy.Proxy{}

	// loop through services so that we can
	// map ip address to localhost
	for _, container := range b.services {
		// create an entry for each port
		for port := range container.NetworkSettings.Ports {
			proxyfile.Set(port.Port(), container.NetworkSettings.IPAddress)
		}
	}

	// write the proxyfile to the temp directory
	proxyfilePath := filepath.Join(dir, "proxy.sh")
	return ioutil.WriteFile(proxyfilePath, proxyfile.Bytes(), 0755)
}