2018-10-11 17:46:41 +02:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/zrepl/yaml-config"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func testValidGlobalSection(t *testing.T, s string) *Config {
|
|
|
|
jobdef := `
|
|
|
|
jobs:
|
|
|
|
- name: dummyjob
|
|
|
|
type: sink
|
|
|
|
serve:
|
|
|
|
type: tcp
|
|
|
|
listen: ":2342"
|
|
|
|
clients: {
|
|
|
|
"10.0.0.1":"foo"
|
|
|
|
}
|
2018-10-11 18:00:23 +02:00
|
|
|
root_fs: zoot/foo
|
2018-10-11 17:46:41 +02:00
|
|
|
`
|
|
|
|
_, err := ParseConfigBytes([]byte(jobdef))
|
|
|
|
require.NoError(t, err)
|
|
|
|
return testValidConfig(t, s + jobdef)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestOutletTypes(t *testing.T) {
|
|
|
|
conf := testValidGlobalSection(t, `
|
|
|
|
global:
|
|
|
|
logging:
|
|
|
|
- type: stdout
|
|
|
|
level: debug
|
|
|
|
format: human
|
|
|
|
- type: syslog
|
|
|
|
level: info
|
|
|
|
retry_interval: 20s
|
|
|
|
format: human
|
|
|
|
- type: tcp
|
|
|
|
level: debug
|
|
|
|
format: json
|
|
|
|
address: logserver.example.com:1234
|
|
|
|
- type: tcp
|
|
|
|
level: debug
|
|
|
|
format: json
|
|
|
|
address: encryptedlogserver.example.com:1234
|
|
|
|
retry_interval: 20s
|
|
|
|
tls:
|
|
|
|
ca: /etc/zrepl/log/ca.crt
|
|
|
|
cert: /etc/zrepl/log/key.pem
|
|
|
|
key: /etc/zrepl/log/cert.pem
|
|
|
|
`)
|
|
|
|
assert.Equal(t, 4, len(*conf.Global.Logging))
|
|
|
|
assert.NotNil(t, (*conf.Global.Logging)[3].Ret.(*TCPLoggingOutlet).TLS)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDefaultLoggingOutlet(t *testing.T) {
|
|
|
|
conf := testValidGlobalSection(t, "")
|
|
|
|
assert.Equal(t, 1, len(*conf.Global.Logging))
|
|
|
|
o := (*conf.Global.Logging)[0].Ret.(StdoutLoggingOutlet)
|
|
|
|
assert.Equal(t, "warn", o.Level)
|
|
|
|
assert.Equal(t, "human", o.Format)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPrometheusMonitoring(t *testing.T) {
|
|
|
|
conf := testValidGlobalSection(t, `
|
|
|
|
global:
|
|
|
|
monitoring:
|
|
|
|
- type: prometheus
|
|
|
|
listen: ':9091'
|
|
|
|
`)
|
|
|
|
assert.Equal(t, ":9091", conf.Global.Monitoring[0].Ret.(*PrometheusMonitoring).Listen)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLoggingOutletEnumList_SetDefaults(t *testing.T) {
|
|
|
|
e := &LoggingOutletEnumList{}
|
|
|
|
var i yaml.Defaulter = e
|
|
|
|
require.NotPanics(t, func() {
|
|
|
|
i.SetDefault()
|
|
|
|
assert.Equal(t, "warn", (*e)[0].Ret.(StdoutLoggingOutlet).Level)
|
|
|
|
})
|
|
|
|
}
|