Merge pull request #35894 from joninvski/improve-syslog-logger-unit-test-coverage

Add options validation to syslog logger
This commit is contained in:
Akihiro Suda 2019-01-01 03:54:23 +09:00 committed by GitHub
commit 8f93a33755
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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")
}
}