github.com/stchris/docker@v1.4.2-0.20150106053530-1510a324dbd5/links/links_test.go (about)

     1  package links
     2  
     3  import (
     4  	"github.com/docker/docker/nat"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  func TestLinkNaming(t *testing.T) {
    10  	ports := make(nat.PortSet)
    11  	ports[nat.Port("6379/tcp")] = struct{}{}
    12  
    13  	link, err := NewLink("172.0.17.3", "172.0.17.2", "/db/docker-1", nil, ports, nil)
    14  	if err != nil {
    15  		t.Fatal(err)
    16  	}
    17  
    18  	rawEnv := link.ToEnv()
    19  	env := make(map[string]string, len(rawEnv))
    20  	for _, e := range rawEnv {
    21  		parts := strings.Split(e, "=")
    22  		if len(parts) != 2 {
    23  			t.FailNow()
    24  		}
    25  		env[parts[0]] = parts[1]
    26  	}
    27  
    28  	value, ok := env["DOCKER_1_PORT"]
    29  
    30  	if !ok {
    31  		t.Fatalf("DOCKER_1_PORT not found in env")
    32  	}
    33  
    34  	if value != "tcp://172.0.17.2:6379" {
    35  		t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_1_PORT"])
    36  	}
    37  }
    38  
    39  func TestLinkNew(t *testing.T) {
    40  	ports := make(nat.PortSet)
    41  	ports[nat.Port("6379/tcp")] = struct{}{}
    42  
    43  	link, err := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", nil, ports, nil)
    44  	if err != nil {
    45  		t.Fatal(err)
    46  	}
    47  
    48  	if link == nil {
    49  		t.FailNow()
    50  	}
    51  	if link.Name != "/db/docker" {
    52  		t.Fail()
    53  	}
    54  	if link.Alias() != "docker" {
    55  		t.Fail()
    56  	}
    57  	if link.ParentIP != "172.0.17.3" {
    58  		t.Fail()
    59  	}
    60  	if link.ChildIP != "172.0.17.2" {
    61  		t.Fail()
    62  	}
    63  	for _, p := range link.Ports {
    64  		if p != nat.Port("6379/tcp") {
    65  			t.Fail()
    66  		}
    67  	}
    68  }
    69  
    70  func TestLinkEnv(t *testing.T) {
    71  	ports := make(nat.PortSet)
    72  	ports[nat.Port("6379/tcp")] = struct{}{}
    73  
    74  	link, err := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, ports, nil)
    75  	if err != nil {
    76  		t.Fatal(err)
    77  	}
    78  
    79  	rawEnv := link.ToEnv()
    80  	env := make(map[string]string, len(rawEnv))
    81  	for _, e := range rawEnv {
    82  		parts := strings.Split(e, "=")
    83  		if len(parts) != 2 {
    84  			t.FailNow()
    85  		}
    86  		env[parts[0]] = parts[1]
    87  	}
    88  	if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
    89  		t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
    90  	}
    91  	if env["DOCKER_PORT_6379_TCP"] != "tcp://172.0.17.2:6379" {
    92  		t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP"])
    93  	}
    94  	if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
    95  		t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
    96  	}
    97  	if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
    98  		t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
    99  	}
   100  	if env["DOCKER_PORT_6379_TCP_PORT"] != "6379" {
   101  		t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT"])
   102  	}
   103  	if env["DOCKER_NAME"] != "/db/docker" {
   104  		t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
   105  	}
   106  	if env["DOCKER_ENV_PASSWORD"] != "gordon" {
   107  		t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
   108  	}
   109  }
   110  
   111  func TestLinkMultipleEnv(t *testing.T) {
   112  	ports := make(nat.PortSet)
   113  	ports[nat.Port("6379/tcp")] = struct{}{}
   114  	ports[nat.Port("6380/tcp")] = struct{}{}
   115  	ports[nat.Port("6381/tcp")] = struct{}{}
   116  
   117  	link, err := NewLink("172.0.17.3", "172.0.17.2", "/db/docker", []string{"PASSWORD=gordon"}, ports, nil)
   118  	if err != nil {
   119  		t.Fatal(err)
   120  	}
   121  
   122  	rawEnv := link.ToEnv()
   123  	env := make(map[string]string, len(rawEnv))
   124  	for _, e := range rawEnv {
   125  		parts := strings.Split(e, "=")
   126  		if len(parts) != 2 {
   127  			t.FailNow()
   128  		}
   129  		env[parts[0]] = parts[1]
   130  	}
   131  	if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
   132  		t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
   133  	}
   134  	if env["DOCKER_PORT_6379_TCP_START"] != "tcp://172.0.17.2:6379" {
   135  		t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP_START"])
   136  	}
   137  	if env["DOCKER_PORT_6379_TCP_END"] != "tcp://172.0.17.2:6381" {
   138  		t.Fatalf("Expected tcp://172.0.17.2:6381, got %s", env["DOCKER_PORT_6379_TCP_END"])
   139  	}
   140  	if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
   141  		t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
   142  	}
   143  	if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
   144  		t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
   145  	}
   146  	if env["DOCKER_PORT_6379_TCP_PORT_START"] != "6379" {
   147  		t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT_START"])
   148  	}
   149  	if env["DOCKER_PORT_6379_TCP_PORT_END"] != "6381" {
   150  		t.Fatalf("Expected 6381, got %s", env["DOCKER_PORT_6379_TCP_PORT_END"])
   151  	}
   152  	if env["DOCKER_NAME"] != "/db/docker" {
   153  		t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
   154  	}
   155  	if env["DOCKER_ENV_PASSWORD"] != "gordon" {
   156  		t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
   157  	}
   158  }