8 "github.com/docker/go-connections/nat"
11 // Just to make life easier
12 func newPortNoError(proto, port string) nat.Port {
13 p, _ := nat.NewPort(proto, port)
17 func TestLinkNaming(t *testing.T) {
18 ports := make(nat.PortSet)
19 ports[newPortNoError("tcp", "6379")] = struct{}{}
21 link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker-1", nil, ports)
23 rawEnv := link.ToEnv()
24 env := make(map[string]string, len(rawEnv))
25 for _, e := range rawEnv {
26 parts := strings.Split(e, "=")
30 env[parts[0]] = parts[1]
33 value, ok := env["DOCKER_1_PORT"]
36 t.Fatal("DOCKER_1_PORT not found in env")
39 if value != "tcp://172.0.17.2:6379" {
40 t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_1_PORT"])
44 func TestLinkNew(t *testing.T) {
45 ports := make(nat.PortSet)
46 ports[newPortNoError("tcp", "6379")] = struct{}{}
48 link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", nil, ports)
50 if link.Name != "/db/docker" {
53 if link.ParentIP != "172.0.17.3" {
56 if link.ChildIP != "172.0.17.2" {
59 for _, p := range link.Ports {
60 if p != newPortNoError("tcp", "6379") {
66 func TestLinkEnv(t *testing.T) {
67 ports := make(nat.PortSet)
68 ports[newPortNoError("tcp", "6379")] = struct{}{}
70 link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, ports)
72 rawEnv := link.ToEnv()
73 env := make(map[string]string, len(rawEnv))
74 for _, e := range rawEnv {
75 parts := strings.Split(e, "=")
79 env[parts[0]] = parts[1]
81 if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
82 t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
84 if env["DOCKER_PORT_6379_TCP"] != "tcp://172.0.17.2:6379" {
85 t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP"])
87 if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
88 t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
90 if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
91 t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
93 if env["DOCKER_PORT_6379_TCP_PORT"] != "6379" {
94 t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT"])
96 if env["DOCKER_NAME"] != "/db/docker" {
97 t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
99 if env["DOCKER_ENV_PASSWORD"] != "gordon" {
100 t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
104 func TestLinkMultipleEnv(t *testing.T) {
105 ports := make(nat.PortSet)
106 ports[newPortNoError("tcp", "6379")] = struct{}{}
107 ports[newPortNoError("tcp", "6380")] = struct{}{}
108 ports[newPortNoError("tcp", "6381")] = struct{}{}
110 link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, ports)
112 rawEnv := link.ToEnv()
113 env := make(map[string]string, len(rawEnv))
114 for _, e := range rawEnv {
115 parts := strings.Split(e, "=")
119 env[parts[0]] = parts[1]
121 if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
122 t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
124 if env["DOCKER_PORT_6379_TCP_START"] != "tcp://172.0.17.2:6379" {
125 t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP_START"])
127 if env["DOCKER_PORT_6379_TCP_END"] != "tcp://172.0.17.2:6381" {
128 t.Fatalf("Expected tcp://172.0.17.2:6381, got %s", env["DOCKER_PORT_6379_TCP_END"])
130 if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
131 t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
133 if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
134 t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
136 if env["DOCKER_PORT_6379_TCP_PORT_START"] != "6379" {
137 t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT_START"])
139 if env["DOCKER_PORT_6379_TCP_PORT_END"] != "6381" {
140 t.Fatalf("Expected 6381, got %s", env["DOCKER_PORT_6379_TCP_PORT_END"])
142 if env["DOCKER_NAME"] != "/db/docker" {
143 t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
145 if env["DOCKER_ENV_PASSWORD"] != "gordon" {
146 t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
150 func TestLinkPortRangeEnv(t *testing.T) {
151 ports := make(nat.PortSet)
152 ports[newPortNoError("tcp", "6379")] = struct{}{}
153 ports[newPortNoError("tcp", "6380")] = struct{}{}
154 ports[newPortNoError("tcp", "6381")] = struct{}{}
156 link := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, ports)
158 rawEnv := link.ToEnv()
159 env := make(map[string]string, len(rawEnv))
160 for _, e := range rawEnv {
161 parts := strings.Split(e, "=")
165 env[parts[0]] = parts[1]
168 if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
169 t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
171 if env["DOCKER_PORT_6379_TCP_START"] != "tcp://172.0.17.2:6379" {
172 t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP_START"])
174 if env["DOCKER_PORT_6379_TCP_END"] != "tcp://172.0.17.2:6381" {
175 t.Fatalf("Expected tcp://172.0.17.2:6381, got %s", env["DOCKER_PORT_6379_TCP_END"])
177 if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
178 t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
180 if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
181 t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
183 if env["DOCKER_PORT_6379_TCP_PORT_START"] != "6379" {
184 t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT_START"])
186 if env["DOCKER_PORT_6379_TCP_PORT_END"] != "6381" {
187 t.Fatalf("Expected 6381, got %s", env["DOCKER_PORT_6379_TCP_PORT_END"])
189 if env["DOCKER_NAME"] != "/db/docker" {
190 t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
192 if env["DOCKER_ENV_PASSWORD"] != "gordon" {
193 t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
195 for _, i := range []int{6379, 6380, 6381} {
196 tcpaddr := fmt.Sprintf("DOCKER_PORT_%d_TCP_ADDR", i)
197 tcpport := fmt.Sprintf("DOCKER_PORT_%d_TCP_PORT", i)
198 tcpproto := fmt.Sprintf("DOCKER_PORT_%d_TCP_PROTO", i)
199 tcp := fmt.Sprintf("DOCKER_PORT_%d_TCP", i)
200 if env[tcpaddr] != "172.0.17.2" {
201 t.Fatalf("Expected env %s = 172.0.17.2, got %s", tcpaddr, env[tcpaddr])
203 if env[tcpport] != fmt.Sprintf("%d", i) {
204 t.Fatalf("Expected env %s = %d, got %s", tcpport, i, env[tcpport])
206 if env[tcpproto] != "tcp" {
207 t.Fatalf("Expected env %s = tcp, got %s", tcpproto, env[tcpproto])
209 if env[tcp] != fmt.Sprintf("tcp://172.0.17.2:%d", i) {
210 t.Fatalf("Expected env %s = tcp://172.0.17.2:%d, got %s", tcp, i, env[tcp])