config_unix_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // +build !windows
  2. package daemon
  3. import (
  4. "io/ioutil"
  5. "testing"
  6. )
  7. func TestDaemonConfigurationMerge(t *testing.T) {
  8. f, err := ioutil.TempFile("", "docker-config-")
  9. if err != nil {
  10. t.Fatal(err)
  11. }
  12. configFile := f.Name()
  13. f.Write([]byte(`
  14. {
  15. "debug": true,
  16. "default-ulimits": {
  17. "nofile": {
  18. "Name": "nofile",
  19. "Hard": 2048,
  20. "Soft": 1024
  21. }
  22. },
  23. "log-opts": {
  24. "tag": "test_tag"
  25. }
  26. }`))
  27. f.Close()
  28. c := &Config{
  29. CommonConfig: CommonConfig{
  30. AutoRestart: true,
  31. LogConfig: LogConfig{
  32. Type: "syslog",
  33. Config: map[string]string{"tag": "test"},
  34. },
  35. },
  36. }
  37. cc, err := MergeDaemonConfigurations(c, nil, configFile)
  38. if err != nil {
  39. t.Fatal(err)
  40. }
  41. if !cc.Debug {
  42. t.Fatalf("expected %v, got %v\n", true, cc.Debug)
  43. }
  44. if !cc.AutoRestart {
  45. t.Fatalf("expected %v, got %v\n", true, cc.AutoRestart)
  46. }
  47. if cc.LogConfig.Type != "syslog" {
  48. t.Fatalf("expected syslog config, got %q\n", cc.LogConfig)
  49. }
  50. if configValue, OK := cc.LogConfig.Config["tag"]; !OK {
  51. t.Fatal("expected syslog config attributes, got nil\n")
  52. } else {
  53. if configValue != "test_tag" {
  54. t.Fatalf("expected syslog config attributes 'tag=test_tag', got 'tag=%s'\n", configValue)
  55. }
  56. }
  57. if cc.Ulimits == nil {
  58. t.Fatal("expected default ulimit config, got nil\n")
  59. } else {
  60. if _, OK := cc.Ulimits["nofile"]; OK {
  61. if cc.Ulimits["nofile"].Name != "nofile" ||
  62. cc.Ulimits["nofile"].Hard != 2048 ||
  63. cc.Ulimits["nofile"].Soft != 1024 {
  64. 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)
  65. }
  66. } else {
  67. t.Fatal("expected default ulimit name nofile, got nil\n")
  68. }
  69. }
  70. }