Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
277
config/types_test.go
Normal file
277
config/types_test.go
Normal file
|
@ -0,0 +1,277 @@
|
|||
package config_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/config"
|
||||
"github.com/influxdata/telegraf/plugins/inputs"
|
||||
"github.com/influxdata/telegraf/plugins/processors/reverse_dns"
|
||||
)
|
||||
|
||||
func TestConfigDuration(t *testing.T) {
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData([]byte(`
|
||||
[[processors.reverse_dns]]
|
||||
cache_ttl = "3h"
|
||||
lookup_timeout = "17s"
|
||||
max_parallel_lookups = 13
|
||||
ordered = true
|
||||
[[processors.reverse_dns.lookup]]
|
||||
field = "source_ip"
|
||||
dest = "source_name"
|
||||
`), config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Processors, 1)
|
||||
p := c.Processors[0].Processor.(*reverse_dns.ReverseDNS)
|
||||
require.EqualValues(t, 3*time.Hour, p.CacheTTL)
|
||||
require.EqualValues(t, 17*time.Second, p.LookupTimeout)
|
||||
require.Equal(t, 13, p.MaxParallelLookups)
|
||||
require.True(t, p.Ordered)
|
||||
}
|
||||
|
||||
func TestDuration(t *testing.T) {
|
||||
var d config.Duration
|
||||
|
||||
d = config.Duration(0)
|
||||
require.NoError(t, d.UnmarshalText([]byte(`1s`)))
|
||||
require.Equal(t, time.Second, time.Duration(d))
|
||||
|
||||
d = config.Duration(0)
|
||||
require.NoError(t, d.UnmarshalText([]byte(`10`)))
|
||||
require.Equal(t, 10*time.Second, time.Duration(d))
|
||||
|
||||
d = config.Duration(0)
|
||||
require.NoError(t, d.UnmarshalText([]byte(`1.5`)))
|
||||
require.Equal(t, 1500*time.Millisecond, time.Duration(d))
|
||||
|
||||
d = config.Duration(0)
|
||||
require.NoError(t, d.UnmarshalText([]byte(``)))
|
||||
require.Equal(t, 0*time.Second, time.Duration(d))
|
||||
|
||||
require.Error(t, d.UnmarshalText([]byte(`"1"`))) // string missing unit
|
||||
require.Error(t, d.UnmarshalText([]byte(`'2'`))) // string missing unit
|
||||
require.Error(t, d.UnmarshalText([]byte(`'ns'`))) // string missing time
|
||||
require.Error(t, d.UnmarshalText([]byte(`'us'`))) // string missing time
|
||||
}
|
||||
|
||||
func TestSize(t *testing.T) {
|
||||
var s config.Size
|
||||
|
||||
require.NoError(t, s.UnmarshalText([]byte(`1B`)))
|
||||
require.Equal(t, int64(1), int64(s))
|
||||
|
||||
s = config.Size(0)
|
||||
require.NoError(t, s.UnmarshalText([]byte(`1`)))
|
||||
require.Equal(t, int64(1), int64(s))
|
||||
|
||||
s = config.Size(0)
|
||||
require.NoError(t, s.UnmarshalText([]byte(`1GB`)))
|
||||
require.Equal(t, int64(1000*1000*1000), int64(s))
|
||||
|
||||
s = config.Size(0)
|
||||
require.NoError(t, s.UnmarshalText([]byte(`12GiB`)))
|
||||
require.Equal(t, int64(12*1024*1024*1024), int64(s))
|
||||
}
|
||||
|
||||
func TestTOMLParsingStringDurations(t *testing.T) {
|
||||
cfg := []byte(`
|
||||
[[inputs.typesmockup]]
|
||||
durations = [
|
||||
"1s",
|
||||
'''1s''',
|
||||
'1s',
|
||||
"1.5s",
|
||||
"",
|
||||
'',
|
||||
"2h",
|
||||
"42m",
|
||||
"100ms",
|
||||
"100us",
|
||||
"100ns",
|
||||
"1d",
|
||||
"7.5d",
|
||||
"7d8h15m",
|
||||
"3d7d",
|
||||
"15m8h3.5d"
|
||||
]
|
||||
`)
|
||||
|
||||
expected := []time.Duration{
|
||||
1 * time.Second,
|
||||
1 * time.Second,
|
||||
1 * time.Second,
|
||||
1500 * time.Millisecond,
|
||||
0,
|
||||
0,
|
||||
2 * time.Hour,
|
||||
42 * time.Minute,
|
||||
100 * time.Millisecond,
|
||||
100 * time.Microsecond,
|
||||
100 * time.Nanosecond,
|
||||
24 * time.Hour,
|
||||
7*24*time.Hour + 12*time.Hour,
|
||||
7*24*time.Hour + 8*time.Hour + 15*time.Minute,
|
||||
10 * 24 * time.Hour,
|
||||
3*24*time.Hour + 12*time.Hour + 8*time.Hour + 15*time.Minute,
|
||||
}
|
||||
|
||||
// Load the data
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData(cfg, config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Inputs, 1)
|
||||
plugin := c.Inputs[0].Input.(*MockupTypesPlugin)
|
||||
|
||||
require.Empty(t, plugin.Sizes)
|
||||
require.Len(t, plugin.Durations, len(expected))
|
||||
for i, actual := range plugin.Durations {
|
||||
require.EqualValuesf(t, expected[i], actual, "case %d failed", i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTOMLParsingIntegerDurations(t *testing.T) {
|
||||
cfg := []byte(`
|
||||
[[inputs.typesmockup]]
|
||||
durations = [
|
||||
1,
|
||||
10,
|
||||
3601
|
||||
]
|
||||
`)
|
||||
|
||||
expected := []time.Duration{
|
||||
1 * time.Second,
|
||||
10 * time.Second,
|
||||
3601 * time.Second,
|
||||
}
|
||||
|
||||
// Load the data
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData(cfg, config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Inputs, 1)
|
||||
plugin := c.Inputs[0].Input.(*MockupTypesPlugin)
|
||||
|
||||
require.Empty(t, plugin.Sizes)
|
||||
require.Len(t, plugin.Durations, len(expected))
|
||||
for i, actual := range plugin.Durations {
|
||||
require.EqualValuesf(t, expected[i], actual, "case %d failed", i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTOMLParsingFloatDurations(t *testing.T) {
|
||||
cfg := []byte(`
|
||||
[[inputs.typesmockup]]
|
||||
durations = [
|
||||
42.0,
|
||||
1.5
|
||||
]
|
||||
`)
|
||||
|
||||
expected := []time.Duration{
|
||||
42 * time.Second,
|
||||
1500 * time.Millisecond,
|
||||
}
|
||||
|
||||
// Load the data
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData(cfg, config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Inputs, 1)
|
||||
plugin := c.Inputs[0].Input.(*MockupTypesPlugin)
|
||||
|
||||
require.Empty(t, plugin.Sizes)
|
||||
require.Len(t, plugin.Durations, len(expected))
|
||||
for i, actual := range plugin.Durations {
|
||||
require.EqualValuesf(t, expected[i], actual, "case %d failed", i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTOMLParsingStringSizes(t *testing.T) {
|
||||
cfg := []byte(`
|
||||
[[inputs.typesmockup]]
|
||||
sizes = [
|
||||
"1B",
|
||||
"1",
|
||||
'1',
|
||||
'''15kB''',
|
||||
"""15KiB""",
|
||||
"1GB",
|
||||
"12GiB"
|
||||
]
|
||||
`)
|
||||
|
||||
expected := []int64{
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
15 * 1000,
|
||||
15 * 1024,
|
||||
1000 * 1000 * 1000,
|
||||
12 * 1024 * 1024 * 1024,
|
||||
}
|
||||
|
||||
// Load the data
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData(cfg, config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Inputs, 1)
|
||||
plugin := c.Inputs[0].Input.(*MockupTypesPlugin)
|
||||
|
||||
require.Empty(t, plugin.Durations)
|
||||
require.Len(t, plugin.Sizes, len(expected))
|
||||
for i, actual := range plugin.Sizes {
|
||||
require.EqualValuesf(t, expected[i], actual, "case %d failed", i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTOMLParsingIntegerSizes(t *testing.T) {
|
||||
cfg := []byte(`
|
||||
[[inputs.typesmockup]]
|
||||
sizes = [
|
||||
0,
|
||||
1,
|
||||
1000,
|
||||
1024
|
||||
]
|
||||
`)
|
||||
|
||||
expected := []int64{
|
||||
0,
|
||||
1,
|
||||
1000,
|
||||
1024,
|
||||
}
|
||||
|
||||
// Load the data
|
||||
c := config.NewConfig()
|
||||
err := c.LoadConfigData(cfg, config.EmptySourcePath)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, c.Inputs, 1)
|
||||
plugin := c.Inputs[0].Input.(*MockupTypesPlugin)
|
||||
|
||||
require.Empty(t, plugin.Durations)
|
||||
require.Len(t, plugin.Sizes, len(expected))
|
||||
for i, actual := range plugin.Sizes {
|
||||
require.EqualValuesf(t, expected[i], actual, "case %d failed", i)
|
||||
}
|
||||
}
|
||||
|
||||
// Mockup (input) plugin for testing to avoid cyclic dependencies
|
||||
type MockupTypesPlugin struct {
|
||||
Durations []config.Duration `toml:"durations"`
|
||||
Sizes []config.Size `toml:"sizes"`
|
||||
}
|
||||
|
||||
func (*MockupTypesPlugin) SampleConfig() string { return "Mockup test types plugin" }
|
||||
func (*MockupTypesPlugin) Gather(_ telegraf.Accumulator) error { return nil }
|
||||
|
||||
// Register the mockup plugin on loading
|
||||
func init() {
|
||||
// Register the mockup input plugin for the required names
|
||||
inputs.Add("typesmockup", func() telegraf.Input { return &MockupTypesPlugin{} })
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue