diff --git a/daemon/logger/syslog/syslog_test.go b/daemon/logger/syslog/syslog_test.go index 4631788fbb..ea531a243f 100644 --- a/daemon/logger/syslog/syslog_test.go +++ b/daemon/logger/syslog/syslog_test.go @@ -1,6 +1,7 @@ package syslog // import "github.com/docker/docker/daemon/logger/syslog" import ( + "net" "reflect" "testing" @@ -60,3 +61,99 @@ func TestValidateLogOptEmpty(t *testing.T) { t.Fatal("Failed to parse empty config", err) } } + +func TestValidateSyslogAddress(t *testing.T) { + err := ValidateLogOpt(map[string]string{ + "syslog-address": "this is not an uri", + }) + if err == nil { + t.Fatal("Expected error with invalid uri") + } + + // File exists + err = ValidateLogOpt(map[string]string{ + "syslog-address": "unix:///", + }) + if err != nil { + t.Fatal(err) + } + + // File does not exist + err = ValidateLogOpt(map[string]string{ + "syslog-address": "unix:///does_not_exist", + }) + if err == nil { + t.Fatal("Expected error when address is non existing file") + } + + // accepts udp and tcp URIs + err = ValidateLogOpt(map[string]string{ + "syslog-address": "udp://1.2.3.4", + }) + if err != nil { + t.Fatal(err) + } + + err = ValidateLogOpt(map[string]string{ + "syslog-address": "tcp://1.2.3.4", + }) + if err != nil { + t.Fatal(err) + } +} + +func TestParseAddressDefaultPort(t *testing.T) { + _, address, err := parseAddress("tcp://1.2.3.4") + if err != nil { + t.Fatal(err) + } + + _, port, _ := net.SplitHostPort(address) + if port != "514" { + t.Fatalf("Expected to default to port 514. It used port %s", port) + } +} + +func TestValidateSyslogFacility(t *testing.T) { + err := ValidateLogOpt(map[string]string{ + "syslog-facility": "Invalid facility", + }) + if err == nil { + t.Fatal("Expected error if facility level is invalid") + } +} + +func TestValidateLogOptSyslogFormat(t *testing.T) { + err := ValidateLogOpt(map[string]string{ + "syslog-format": "Invalid format", + }) + if err == nil { + t.Fatal("Expected error if format is invalid") + } +} + +func TestValidateLogOpt(t *testing.T) { + err := ValidateLogOpt(map[string]string{ + "env": "http://127.0.0.1", + "env-regex": "abc", + "labels": "labelA", + "syslog-address": "udp://1.2.3.4:1111", + "syslog-facility": "daemon", + "syslog-tls-ca-cert": "/etc/ca-certificates/custom/ca.pem", + "syslog-tls-cert": "/etc/ca-certificates/custom/cert.pem", + "syslog-tls-key": "/etc/ca-certificates/custom/key.pem", + "syslog-tls-skip-verify": "true", + "tag": "true", + "syslog-format": "rfc3164", + }) + if err != nil { + t.Fatal(err) + } + + err = ValidateLogOpt(map[string]string{ + "not-supported-option": "a", + }) + if err == nil { + t.Fatal("Expecting error on unsupported options") + } +}