| // +build !windows |
| |
| package daemon |
| |
| import ( |
| "io/ioutil" |
| "testing" |
| ) |
| |
| func TestDaemonConfigurationMerge(t *testing.T) { |
| f, err := ioutil.TempFile("", "docker-config-") |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| configFile := f.Name() |
| |
| f.Write([]byte(` |
| { |
| "debug": true, |
| "default-ulimits": { |
| "nofile": { |
| "Name": "nofile", |
| "Hard": 2048, |
| "Soft": 1024 |
| } |
| }, |
| "log-opts": { |
| "tag": "test_tag" |
| } |
| }`)) |
| |
| f.Close() |
| |
| c := &Config{ |
| CommonConfig: CommonConfig{ |
| AutoRestart: true, |
| LogConfig: LogConfig{ |
| Type: "syslog", |
| Config: map[string]string{"tag": "test"}, |
| }, |
| }, |
| } |
| |
| cc, err := MergeDaemonConfigurations(c, nil, configFile) |
| if err != nil { |
| t.Fatal(err) |
| } |
| if !cc.Debug { |
| t.Fatalf("expected %v, got %v\n", true, cc.Debug) |
| } |
| if !cc.AutoRestart { |
| t.Fatalf("expected %v, got %v\n", true, cc.AutoRestart) |
| } |
| if cc.LogConfig.Type != "syslog" { |
| t.Fatalf("expected syslog config, got %q\n", cc.LogConfig) |
| } |
| |
| if configValue, OK := cc.LogConfig.Config["tag"]; !OK { |
| t.Fatal("expected syslog config attributes, got nil\n") |
| } else { |
| if configValue != "test_tag" { |
| t.Fatalf("expected syslog config attributes 'tag=test_tag', got 'tag=%s'\n", configValue) |
| } |
| } |
| |
| if cc.Ulimits == nil { |
| t.Fatal("expected default ulimit config, got nil\n") |
| } else { |
| if _, OK := cc.Ulimits["nofile"]; OK { |
| if cc.Ulimits["nofile"].Name != "nofile" || |
| cc.Ulimits["nofile"].Hard != 2048 || |
| cc.Ulimits["nofile"].Soft != 1024 { |
| 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) |
| } |
| } else { |
| t.Fatal("expected default ulimit name nofile, got nil\n") |
| } |
| } |
| } |