config_unix_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // +build !windows
  2. package config
  3. import (
  4. "io/ioutil"
  5. "runtime"
  6. "testing"
  7. )
  8. func TestDaemonConfigurationMerge(t *testing.T) {
  9. f, err := ioutil.TempFile("", "docker-config-")
  10. if err != nil {
  11. t.Fatal(err)
  12. }
  13. configFile := f.Name()
  14. f.Write([]byte(`
  15. {
  16. "debug": true,
  17. "default-ulimits": {
  18. "nofile": {
  19. "Name": "nofile",
  20. "Hard": 2048,
  21. "Soft": 1024
  22. }
  23. },
  24. "log-opts": {
  25. "tag": "test_tag"
  26. }
  27. }`))
  28. f.Close()
  29. c := &Config{
  30. CommonConfig: CommonConfig{
  31. AutoRestart: true,
  32. LogConfig: LogConfig{
  33. Type: "syslog",
  34. Config: map[string]string{"tag": "test"},
  35. },
  36. },
  37. }
  38. cc, err := MergeDaemonConfigurations(c, nil, configFile)
  39. if err != nil {
  40. t.Fatal(err)
  41. }
  42. if !cc.Debug {
  43. t.Fatalf("expected %v, got %v\n", true, cc.Debug)
  44. }
  45. if !cc.AutoRestart {
  46. t.Fatalf("expected %v, got %v\n", true, cc.AutoRestart)
  47. }
  48. if cc.LogConfig.Type != "syslog" {
  49. t.Fatalf("expected syslog config, got %q\n", cc.LogConfig)
  50. }
  51. if configValue, OK := cc.LogConfig.Config["tag"]; !OK {
  52. t.Fatal("expected syslog config attributes, got nil\n")
  53. } else {
  54. if configValue != "test_tag" {
  55. t.Fatalf("expected syslog config attributes 'tag=test_tag', got 'tag=%s'\n", configValue)
  56. }
  57. }
  58. if cc.Ulimits == nil {
  59. t.Fatal("expected default ulimit config, got nil\n")
  60. } else {
  61. if _, OK := cc.Ulimits["nofile"]; OK {
  62. if cc.Ulimits["nofile"].Name != "nofile" ||
  63. cc.Ulimits["nofile"].Hard != 2048 ||
  64. cc.Ulimits["nofile"].Soft != 1024 {
  65. t.Fatalf("expected default ulimit name, hard and soft are nofile, 2048, 1024, got %s, %d, %d\n", cc.Ulimits["nofile"].Name, cc.Ulimits["nofile"].Hard, cc.Ulimits["nofile"].Soft)
  66. }
  67. } else {
  68. t.Fatal("expected default ulimit name nofile, got nil\n")
  69. }
  70. }
  71. }
  72. func TestDaemonConfigurationMergeShmSize(t *testing.T) {
  73. if runtime.GOOS == "solaris" {
  74. t.Skip("ShmSize not supported on Solaris\n")
  75. }
  76. f, err := ioutil.TempFile("", "docker-config-")
  77. if err != nil {
  78. t.Fatal(err)
  79. }
  80. configFile := f.Name()
  81. f.Write([]byte(`
  82. {
  83. "default-shm-size": "1g"
  84. }`))
  85. f.Close()
  86. c := &Config{}
  87. cc, err := MergeDaemonConfigurations(c, nil, configFile)
  88. if err != nil {
  89. t.Fatal(err)
  90. }
  91. expectedValue := 1 * 1024 * 1024 * 1024
  92. if cc.ShmSize.Value() != int64(expectedValue) {
  93. t.Fatalf("expected default shm size %d, got %d", expectedValue, cc.ShmSize.Value())
  94. }
  95. }