links_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package docker
  2. import (
  3. "strings"
  4. "testing"
  5. )
  6. func newMockLinkContainer(id string, ip string) *Container {
  7. return &Container{
  8. Config: &Config{},
  9. ID: id,
  10. NetworkSettings: &NetworkSettings{
  11. IPAddress: ip,
  12. },
  13. }
  14. }
  15. func TestLinkNew(t *testing.T) {
  16. toID := GenerateID()
  17. fromID := GenerateID()
  18. from := newMockLinkContainer(fromID, "172.0.17.2")
  19. from.Config.Env = []string{}
  20. from.State = State{Running: true}
  21. ports := make(map[Port]struct{})
  22. ports[Port("6379/tcp")] = struct{}{}
  23. from.Config.ExposedPorts = ports
  24. to := newMockLinkContainer(toID, "172.0.17.3")
  25. link, err := NewLink(to, from, "/db/docker", "172.0.17.1")
  26. if err != nil {
  27. t.Fatal(err)
  28. }
  29. if link == nil {
  30. t.FailNow()
  31. }
  32. if link.Name != "/db/docker" {
  33. t.Fail()
  34. }
  35. if link.Alias() != "docker" {
  36. t.Fail()
  37. }
  38. if link.ParentIP != "172.0.17.3" {
  39. t.Fail()
  40. }
  41. if link.ChildIP != "172.0.17.2" {
  42. t.Fail()
  43. }
  44. if link.BridgeInterface != "172.0.17.1" {
  45. t.Fail()
  46. }
  47. for _, p := range link.Ports {
  48. if p != Port("6379/tcp") {
  49. t.Fail()
  50. }
  51. }
  52. }
  53. func TestLinkEnv(t *testing.T) {
  54. toID := GenerateID()
  55. fromID := GenerateID()
  56. from := newMockLinkContainer(fromID, "172.0.17.2")
  57. from.Config.Env = []string{"PASSWORD=gordon"}
  58. from.State = State{Running: true}
  59. ports := make(map[Port]struct{})
  60. ports[Port("6379/tcp")] = struct{}{}
  61. from.Config.ExposedPorts = ports
  62. to := newMockLinkContainer(toID, "172.0.17.3")
  63. link, err := NewLink(to, from, "/db/docker", "172.0.17.1")
  64. if err != nil {
  65. t.Fatal(err)
  66. }
  67. rawEnv := link.ToEnv()
  68. env := make(map[string]string, len(rawEnv))
  69. for _, e := range rawEnv {
  70. parts := strings.Split(e, "=")
  71. if len(parts) != 2 {
  72. t.FailNow()
  73. }
  74. env[parts[0]] = parts[1]
  75. }
  76. if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" {
  77. t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"])
  78. }
  79. if env["DOCKER_PORT_6379_TCP"] != "tcp://172.0.17.2:6379" {
  80. t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP"])
  81. }
  82. if env["DOCKER_PORT_6379_TCP_PROTO"] != "tcp" {
  83. t.Fatalf("Expected tcp, got %s", env["DOCKER_PORT_6379_TCP_PROTO"])
  84. }
  85. if env["DOCKER_PORT_6379_TCP_ADDR"] != "172.0.17.2" {
  86. t.Fatalf("Expected 172.0.17.2, got %s", env["DOCKER_PORT_6379_TCP_ADDR"])
  87. }
  88. if env["DOCKER_PORT_6379_TCP_PORT"] != "6379" {
  89. t.Fatalf("Expected 6379, got %s", env["DOCKER_PORT_6379_TCP_PORT"])
  90. }
  91. if env["DOCKER_NAME"] != "/db/docker" {
  92. t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"])
  93. }
  94. if env["DOCKER_ENV_PASSWORD"] != "gordon" {
  95. t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"])
  96. }
  97. }