daemon/config_unix_test.go
e3164842
 // +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")
 		}
 	}
 }