fix: Linter fixes for plugins/inputs/[t-z]* (#10105)

This commit is contained in:
Paweł Żak 2021-11-18 15:22:43 +01:00 committed by GitHub
parent f82528dd8a
commit 146fff3183
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 286 additions and 289 deletions

View File

@ -122,14 +122,14 @@ func (w *MultilineMatchWhichLine) UnmarshalText(data []byte) (err error) {
switch strings.ToUpper(s) { switch strings.ToUpper(s) {
case `PREVIOUS`, `"PREVIOUS"`, `'PREVIOUS'`: case `PREVIOUS`, `"PREVIOUS"`, `'PREVIOUS'`:
*w = Previous *w = Previous
return return nil
case `NEXT`, `"NEXT"`, `'NEXT'`: case `NEXT`, `"NEXT"`, `'NEXT'`:
*w = Next *w = Next
return return nil
} }
*w = -1 *w = -1
return fmt.Errorf("E! [inputs.tail] unknown multiline MatchWhichLine") return fmt.Errorf("unknown multiline MatchWhichLine")
} }
// MarshalText implements encoding.TextMarshaler // MarshalText implements encoding.TextMarshaler
@ -138,5 +138,5 @@ func (w MultilineMatchWhichLine) MarshalText() ([]byte, error) {
if s != "" { if s != "" {
return []byte(s), nil return []byte(s), nil
} }
return nil, fmt.Errorf("E! [inputs.tail] unknown multiline MatchWhichLine") return nil, fmt.Errorf("unknown multiline MatchWhichLine")
} }

View File

@ -5,8 +5,9 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
"github.com/stretchr/testify/assert"
) )
func TestMultilineConfigOK(t *testing.T) { func TestMultilineConfigOK(t *testing.T) {
@ -17,7 +18,7 @@ func TestMultilineConfigOK(t *testing.T) {
_, err := c.NewMultiline() _, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
} }
func TestMultilineConfigError(t *testing.T) { func TestMultilineConfigError(t *testing.T) {
@ -28,7 +29,7 @@ func TestMultilineConfigError(t *testing.T) {
_, err := c.NewMultiline() _, err := c.NewMultiline()
assert.Error(t, err, "The pattern was invalid") require.Error(t, err, "The pattern was invalid")
} }
func TestMultilineConfigTimeoutSpecified(t *testing.T) { func TestMultilineConfigTimeoutSpecified(t *testing.T) {
@ -39,9 +40,9 @@ func TestMultilineConfigTimeoutSpecified(t *testing.T) {
Timeout: &duration, Timeout: &duration,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
assert.Equal(t, duration, *m.config.Timeout) require.Equal(t, duration, *m.config.Timeout)
} }
func TestMultilineConfigDefaultTimeout(t *testing.T) { func TestMultilineConfigDefaultTimeout(t *testing.T) {
@ -51,9 +52,9 @@ func TestMultilineConfigDefaultTimeout(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
assert.Equal(t, duration, *m.config.Timeout) require.Equal(t, duration, *m.config.Timeout)
} }
func TestMultilineIsEnabled(t *testing.T) { func TestMultilineIsEnabled(t *testing.T) {
@ -62,11 +63,11 @@ func TestMultilineIsEnabled(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
isEnabled := m.IsEnabled() isEnabled := m.IsEnabled()
assert.True(t, isEnabled, "Should have been enabled") require.True(t, isEnabled, "Should have been enabled")
} }
func TestMultilineIsDisabled(t *testing.T) { func TestMultilineIsDisabled(t *testing.T) {
@ -74,11 +75,11 @@ func TestMultilineIsDisabled(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
isEnabled := m.IsEnabled() isEnabled := m.IsEnabled()
assert.False(t, isEnabled, "Should have been disabled") require.False(t, isEnabled, "Should have been disabled")
} }
func TestMultilineFlushEmpty(t *testing.T) { func TestMultilineFlushEmpty(t *testing.T) {
@ -87,12 +88,12 @@ func TestMultilineFlushEmpty(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
var buffer bytes.Buffer var buffer bytes.Buffer
text := m.Flush(&buffer) text := m.Flush(&buffer)
assert.Empty(t, text) require.Empty(t, text)
} }
func TestMultilineFlush(t *testing.T) { func TestMultilineFlush(t *testing.T) {
@ -101,15 +102,15 @@ func TestMultilineFlush(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
var buffer bytes.Buffer var buffer bytes.Buffer
_, err = buffer.WriteString("foo") _, err = buffer.WriteString("foo")
assert.NoError(t, err) require.NoError(t, err)
text := m.Flush(&buffer) text := m.Flush(&buffer)
assert.Equal(t, "foo", text) require.Equal(t, "foo", text)
assert.Zero(t, buffer.Len()) require.Zero(t, buffer.Len())
} }
func TestMultiLineProcessLinePrevious(t *testing.T) { func TestMultiLineProcessLinePrevious(t *testing.T) {
@ -118,28 +119,28 @@ func TestMultiLineProcessLinePrevious(t *testing.T) {
MatchWhichLine: Previous, MatchWhichLine: Previous,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
var buffer bytes.Buffer var buffer bytes.Buffer
text := m.ProcessLine("1", &buffer) text := m.ProcessLine("1", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("=>2", &buffer) text = m.ProcessLine("=>2", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("=>3", &buffer) text = m.ProcessLine("=>3", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("4", &buffer) text = m.ProcessLine("4", &buffer)
assert.Equal(t, "1=>2=>3", text) require.Equal(t, "1=>2=>3", text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("5", &buffer) text = m.ProcessLine("5", &buffer)
assert.Equal(t, "4", text) require.Equal(t, "4", text)
assert.Equal(t, "5", buffer.String()) require.Equal(t, "5", buffer.String())
} }
func TestMultiLineProcessLineNext(t *testing.T) { func TestMultiLineProcessLineNext(t *testing.T) {
@ -148,28 +149,28 @@ func TestMultiLineProcessLineNext(t *testing.T) {
MatchWhichLine: Next, MatchWhichLine: Next,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
var buffer bytes.Buffer var buffer bytes.Buffer
text := m.ProcessLine("1=>", &buffer) text := m.ProcessLine("1=>", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("2=>", &buffer) text = m.ProcessLine("2=>", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("3=>", &buffer) text = m.ProcessLine("3=>", &buffer)
assert.Empty(t, text) require.Empty(t, text)
assert.NotZero(t, buffer.Len()) require.NotZero(t, buffer.Len())
text = m.ProcessLine("4", &buffer) text = m.ProcessLine("4", &buffer)
assert.Equal(t, "1=>2=>3=>4", text) require.Equal(t, "1=>2=>3=>4", text)
assert.Zero(t, buffer.Len()) require.Zero(t, buffer.Len())
text = m.ProcessLine("5", &buffer) text = m.ProcessLine("5", &buffer)
assert.Equal(t, "5", text) require.Equal(t, "5", text)
assert.Zero(t, buffer.Len()) require.Zero(t, buffer.Len())
} }
func TestMultiLineMatchStringWithInvertMatchFalse(t *testing.T) { func TestMultiLineMatchStringWithInvertMatchFalse(t *testing.T) {
@ -179,13 +180,13 @@ func TestMultiLineMatchStringWithInvertMatchFalse(t *testing.T) {
InvertMatch: false, InvertMatch: false,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
matches1 := m.matchString("t=>") matches1 := m.matchString("t=>")
matches2 := m.matchString("t") matches2 := m.matchString("t")
assert.True(t, matches1) require.True(t, matches1)
assert.False(t, matches2) require.False(t, matches2)
} }
func TestMultiLineMatchStringWithInvertTrue(t *testing.T) { func TestMultiLineMatchStringWithInvertTrue(t *testing.T) {
@ -195,41 +196,41 @@ func TestMultiLineMatchStringWithInvertTrue(t *testing.T) {
InvertMatch: true, InvertMatch: true,
} }
m, err := c.NewMultiline() m, err := c.NewMultiline()
assert.NoError(t, err, "Configuration was OK.") require.NoError(t, err, "Configuration was OK.")
matches1 := m.matchString("t=>") matches1 := m.matchString("t=>")
matches2 := m.matchString("t") matches2 := m.matchString("t")
assert.False(t, matches1) require.False(t, matches1)
assert.True(t, matches2) require.True(t, matches2)
} }
func TestMultilineWhat(t *testing.T) { func TestMultilineWhat(t *testing.T) {
var w1 MultilineMatchWhichLine var w1 MultilineMatchWhichLine
assert.NoError(t, w1.UnmarshalTOML([]byte(`"previous"`))) require.NoError(t, w1.UnmarshalTOML([]byte(`"previous"`)))
assert.Equal(t, Previous, w1) require.Equal(t, Previous, w1)
var w2 MultilineMatchWhichLine var w2 MultilineMatchWhichLine
assert.NoError(t, w2.UnmarshalTOML([]byte(`previous`))) require.NoError(t, w2.UnmarshalTOML([]byte(`previous`)))
assert.Equal(t, Previous, w2) require.Equal(t, Previous, w2)
var w3 MultilineMatchWhichLine var w3 MultilineMatchWhichLine
assert.NoError(t, w3.UnmarshalTOML([]byte(`'previous'`))) require.NoError(t, w3.UnmarshalTOML([]byte(`'previous'`)))
assert.Equal(t, Previous, w3) require.Equal(t, Previous, w3)
var w4 MultilineMatchWhichLine var w4 MultilineMatchWhichLine
assert.NoError(t, w4.UnmarshalTOML([]byte(`"next"`))) require.NoError(t, w4.UnmarshalTOML([]byte(`"next"`)))
assert.Equal(t, Next, w4) require.Equal(t, Next, w4)
var w5 MultilineMatchWhichLine var w5 MultilineMatchWhichLine
assert.NoError(t, w5.UnmarshalTOML([]byte(`next`))) require.NoError(t, w5.UnmarshalTOML([]byte(`next`)))
assert.Equal(t, Next, w5) require.Equal(t, Next, w5)
var w6 MultilineMatchWhichLine var w6 MultilineMatchWhichLine
assert.NoError(t, w6.UnmarshalTOML([]byte(`'next'`))) require.NoError(t, w6.UnmarshalTOML([]byte(`'next'`)))
assert.Equal(t, Next, w6) require.Equal(t, Next, w6)
var w7 MultilineMatchWhichLine var w7 MultilineMatchWhichLine
assert.Error(t, w7.UnmarshalTOML([]byte(`nope`))) require.Error(t, w7.UnmarshalTOML([]byte(`nope`)))
assert.Equal(t, MultilineMatchWhichLine(-1), w7) require.Equal(t, MultilineMatchWhichLine(-1), w7)
} }

View File

@ -9,7 +9,6 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
@ -81,7 +80,7 @@ func TestTailBadLine(t *testing.T) {
acc.Wait(1) acc.Wait(1)
tt.Stop() tt.Stop()
assert.Contains(t, buf.String(), "Malformed log line") require.Contains(t, buf.String(), "Malformed log line")
} }
func TestTailDosLineEndings(t *testing.T) { func TestTailDosLineEndings(t *testing.T) {
@ -137,7 +136,7 @@ func TestGrokParseLogFilesWithMultiline(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
acc := testutil.Accumulator{} acc := testutil.Accumulator{}
assert.NoError(t, tt.Start(&acc)) require.NoError(t, tt.Start(&acc))
defer tt.Stop() defer tt.Stop()
acc.Wait(3) acc.Wait(3)
@ -168,7 +167,7 @@ func TestGrokParseLogFilesWithMultiline(t *testing.T) {
"loglevel": "ERROR", "loglevel": "ERROR",
}) })
assert.Equal(t, uint64(3), acc.NMetrics()) require.Equal(t, uint64(3), acc.NMetrics())
} }
func TestGrokParseLogFilesWithMultilineTimeout(t *testing.T) { func TestGrokParseLogFilesWithMultilineTimeout(t *testing.T) {
@ -201,7 +200,7 @@ func TestGrokParseLogFilesWithMultilineTimeout(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
acc := testutil.Accumulator{} acc := testutil.Accumulator{}
assert.NoError(t, tt.Start(&acc)) require.NoError(t, tt.Start(&acc))
time.Sleep(11 * time.Millisecond) // will force timeout time.Sleep(11 * time.Millisecond) // will force timeout
_, err = tmpfile.WriteString("[04/Jun/2016:12:41:48 +0100] INFO HelloExample: This is info\r\n") _, err = tmpfile.WriteString("[04/Jun/2016:12:41:48 +0100] INFO HelloExample: This is info\r\n")
require.NoError(t, err) require.NoError(t, err)
@ -213,7 +212,7 @@ func TestGrokParseLogFilesWithMultilineTimeout(t *testing.T) {
require.NoError(t, tmpfile.Sync()) require.NoError(t, tmpfile.Sync())
acc.Wait(3) acc.Wait(3)
tt.Stop() tt.Stop()
assert.Equal(t, uint64(3), acc.NMetrics()) require.Equal(t, uint64(3), acc.NMetrics())
expectedPath := tmpfile.Name() expectedPath := tmpfile.Name()
acc.AssertContainsTaggedFields(t, "tail_grok", acc.AssertContainsTaggedFields(t, "tail_grok",
@ -254,9 +253,9 @@ func TestGrokParseLogFilesWithMultilineTailerCloseFlushesMultilineBuffer(t *test
require.NoError(t, err) require.NoError(t, err)
acc := testutil.Accumulator{} acc := testutil.Accumulator{}
assert.NoError(t, tt.Start(&acc)) require.NoError(t, tt.Start(&acc))
acc.Wait(3) acc.Wait(3)
assert.Equal(t, uint64(3), acc.NMetrics()) require.Equal(t, uint64(3), acc.NMetrics())
// Close tailer, so multiline buffer is flushed // Close tailer, so multiline buffer is flushed
tt.Stop() tt.Stop()
acc.Wait(4) acc.Wait(4)
@ -561,7 +560,6 @@ func TestCharacterEncoding(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
plugin := &Tail{ plugin := &Tail{
Files: []string{filepath.Join(testdataDir, tt.testfiles)}, Files: []string{filepath.Join(testdataDir, tt.testfiles)},
FromBeginning: tt.fromBeginning, FromBeginning: tt.fromBeginning,

View File

@ -3,7 +3,6 @@ package tcp_listener
import ( import (
"bufio" "bufio"
"fmt" "fmt"
"log"
"net" "net"
"sync" "sync"
@ -88,7 +87,7 @@ func (t *TCPListener) Start(acc telegraf.Accumulator) error {
t.Lock() t.Lock()
defer t.Unlock() defer t.Unlock()
log.Println("W! DEPRECATED: the TCP listener plugin has been deprecated " + t.Log.Warn("DEPRECATED: the TCP listener plugin has been deprecated " +
"in favor of the socket_listener plugin " + "in favor of the socket_listener plugin " +
"(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener)") "(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener)")

View File

@ -11,11 +11,10 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/plugins/parsers" "github.com/influxdata/telegraf/plugins/parsers"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
const ( const (
@ -96,10 +95,10 @@ func TestHighTrafficTCP(t *testing.T) {
require.NoError(t, conn.(*net.TCPConn).CloseWrite()) require.NoError(t, conn.(*net.TCPConn).CloseWrite())
buf := []byte{0} buf := []byte{0}
_, err = conn.Read(buf) _, err = conn.Read(buf)
assert.Equal(t, err, io.EOF) require.Equal(t, err, io.EOF)
listener.Stop() listener.Stop()
assert.Equal(t, 100000, int(acc.NMetrics())) require.Equal(t, 100000, int(acc.NMetrics()))
} }
func TestConnectTCP(t *testing.T) { func TestConnectTCP(t *testing.T) {
@ -168,14 +167,14 @@ func TestConcurrentConns(t *testing.T) {
buf := make([]byte, 1500) buf := make([]byte, 1500)
n, err := conn.Read(buf) n, err := conn.Read(buf)
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, require.Equal(t,
"Telegraf maximum concurrent TCP connections (2) reached, closing.\n"+ "Telegraf maximum concurrent TCP connections (2) reached, closing.\n"+
"You may want to increase max_tcp_connections in"+ "You may want to increase max_tcp_connections in"+
" the Telegraf tcp listener configuration.\n", " the Telegraf tcp listener configuration.\n",
string(buf[:n])) string(buf[:n]))
_, err = conn.Read(buf) _, err = conn.Read(buf)
assert.Equal(t, io.EOF, err) require.Equal(t, io.EOF, err)
} }
// Test that MaxTCPConnections is respected when max==1 // Test that MaxTCPConnections is respected when max==1
@ -203,14 +202,14 @@ func TestConcurrentConns1(t *testing.T) {
buf := make([]byte, 1500) buf := make([]byte, 1500)
n, err := conn.Read(buf) n, err := conn.Read(buf)
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, require.Equal(t,
"Telegraf maximum concurrent TCP connections (1) reached, closing.\n"+ "Telegraf maximum concurrent TCP connections (1) reached, closing.\n"+
"You may want to increase max_tcp_connections in"+ "You may want to increase max_tcp_connections in"+
" the Telegraf tcp listener configuration.\n", " the Telegraf tcp listener configuration.\n",
string(buf[:n])) string(buf[:n]))
_, err = conn.Read(buf) _, err = conn.Read(buf)
assert.Equal(t, io.EOF, err) require.Equal(t, io.EOF, err)
} }
// Test that MaxTCPConnections is respected // Test that MaxTCPConnections is respected

View File

@ -8,9 +8,9 @@ import (
"net/url" "net/url"
"testing" "testing"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
) )
const tengineSampleResponse = `127.0.0.1,784,1511,2,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0` const tengineSampleResponse = `127.0.0.1,784,1511,2,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0`
@ -22,7 +22,7 @@ func TestTengineTags(t *testing.T) {
for _, url1 := range urls { for _, url1 := range urls {
addr, _ = url.Parse(url1) addr, _ = url.Parse(url1)
tagMap := getTags(addr, "127.0.0.1") tagMap := getTags(addr, "127.0.0.1")
assert.Contains(t, tagMap["server"], "localhost") require.Contains(t, tagMap["server"], "localhost")
} }
} }

View File

@ -44,7 +44,7 @@ func (t *Twemproxy) Gather(acc telegraf.Accumulator) error {
var stats map[string]interface{} var stats map[string]interface{}
if err = json.Unmarshal(body, &stats); err != nil { if err = json.Unmarshal(body, &stats); err != nil {
return errors.New("Error decoding JSON response") return errors.New("error decoding JSON response")
} }
tags := make(map[string]string) tags := make(map[string]string)
@ -124,11 +124,8 @@ func (t *Twemproxy) processServer(
) { ) {
fields := make(map[string]interface{}) fields := make(map[string]interface{})
for key, value := range data { for key, value := range data {
switch key { if val, ok := value.(float64); ok {
default: fields[key] = val
if val, ok := value.(float64); ok {
fields[key] = val
}
} }
} }
acc.AddFields("twemproxy_pool_server", fields, tags) acc.AddFields("twemproxy_pool_server", fields, tags)

View File

@ -5,8 +5,9 @@ import (
"net" "net"
"testing" "testing"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
) )
const sampleAddr = "127.0.0.1:22222" const sampleAddr = "127.0.0.1:22222"
@ -65,15 +66,12 @@ func mockTwemproxyServer() (net.Listener, error) {
return nil, err return nil, err
} }
go func(l net.Listener) { go func(l net.Listener) {
for { conn, _ := l.Accept()
conn, _ := l.Accept() if _, err := conn.Write([]byte(sampleStats)); err != nil {
if _, err := conn.Write([]byte(sampleStats)); err != nil { return
return }
} if err := conn.Close(); err != nil {
if err := conn.Close(); err != nil { return
return
}
break
} }
}(listener) }(listener)

View File

@ -2,7 +2,6 @@ package udp_listener
import ( import (
"fmt" "fmt"
"log"
"net" "net"
"sync" "sync"
"time" "time"
@ -96,7 +95,7 @@ func (u *UDPListener) Start(acc telegraf.Accumulator) error {
u.Lock() u.Lock()
defer u.Unlock() defer u.Unlock()
log.Println("W! DEPRECATED: the UDP listener plugin has been deprecated " + u.Log.Warn("DEPRECATED: the UDP listener plugin has been deprecated " +
"in favor of the socket_listener plugin " + "in favor of the socket_listener plugin " +
"(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener)") "(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener)")
@ -172,8 +171,7 @@ func (u *UDPListener) udpListenLoop() {
n, _, err := u.listener.ReadFromUDP(buf) n, _, err := u.listener.ReadFromUDP(buf)
if err != nil { if err != nil {
if err, ok := err.(net.Error); ok && err.Timeout() { if err, ok := err.(net.Error); !ok || !err.Timeout() {
} else {
u.Log.Error(err.Error()) u.Log.Error(err.Error())
} }
continue continue

View File

@ -4,8 +4,9 @@ import (
"bytes" "bytes"
"testing" "testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
) )
func UnboundControl(output string) func(unbound Unbound) (*bytes.Buffer, error) { func UnboundControl(output string) func(unbound Unbound) (*bytes.Buffer, error) {
@ -21,12 +22,12 @@ func TestParseFullOutput(t *testing.T) {
} }
err := v.Gather(acc) err := v.Gather(acc)
assert.NoError(t, err) require.NoError(t, err)
assert.True(t, acc.HasMeasurement("unbound")) require.True(t, acc.HasMeasurement("unbound"))
assert.Len(t, acc.Metrics, 1) require.Len(t, acc.Metrics, 1)
assert.Equal(t, acc.NFields(), 63) require.Equal(t, acc.NFields(), 63)
acc.AssertContainsFields(t, "unbound", parsedFullOutput) acc.AssertContainsFields(t, "unbound", parsedFullOutput)
} }
@ -39,13 +40,13 @@ func TestParseFullOutputThreadAsTag(t *testing.T) {
} }
err := v.Gather(acc) err := v.Gather(acc)
assert.NoError(t, err) require.NoError(t, err)
assert.True(t, acc.HasMeasurement("unbound")) require.True(t, acc.HasMeasurement("unbound"))
assert.True(t, acc.HasMeasurement("unbound_threads")) require.True(t, acc.HasMeasurement("unbound_threads"))
assert.Len(t, acc.Metrics, 2) require.Len(t, acc.Metrics, 2)
assert.Equal(t, acc.NFields(), 63) require.Equal(t, acc.NFields(), 63)
acc.AssertContainsFields(t, "unbound", parsedFullOutputThreadAsTagMeasurementUnbound) acc.AssertContainsFields(t, "unbound", parsedFullOutputThreadAsTagMeasurementUnbound)
acc.AssertContainsFields(t, "unbound_threads", parsedFullOutputThreadAsTagMeasurementUnboundThreads) acc.AssertContainsFields(t, "unbound_threads", parsedFullOutputThreadAsTagMeasurementUnboundThreads)

View File

@ -78,20 +78,20 @@ func (u *Uwsgi) Gather(acc telegraf.Accumulator) error {
return nil return nil
} }
func (u *Uwsgi) gatherServer(acc telegraf.Accumulator, url *url.URL) error { func (u *Uwsgi) gatherServer(acc telegraf.Accumulator, address *url.URL) error {
var err error var err error
var r io.ReadCloser var r io.ReadCloser
var s StatsServer var s StatsServer
switch url.Scheme { switch address.Scheme {
case "tcp": case "tcp":
r, err = net.DialTimeout(url.Scheme, url.Host, time.Duration(u.Timeout)) r, err = net.DialTimeout(address.Scheme, address.Host, time.Duration(u.Timeout))
if err != nil { if err != nil {
return err return err
} }
s.source = url.Host s.source = address.Host
case "unix": case "unix":
r, err = net.DialTimeout(url.Scheme, url.Path, time.Duration(u.Timeout)) r, err = net.DialTimeout(address.Scheme, address.Path, time.Duration(u.Timeout))
if err != nil { if err != nil {
return err return err
} }
@ -100,20 +100,20 @@ func (u *Uwsgi) gatherServer(acc telegraf.Accumulator, url *url.URL) error {
s.source = "" s.source = ""
} }
case "http": case "http":
resp, err := u.client.Get(url.String()) resp, err := u.client.Get(address.String()) //nolint:bodyclose // response body is closed after switch
if err != nil { if err != nil {
return err return err
} }
r = resp.Body r = resp.Body
s.source = url.Host s.source = address.Host
default: default:
return fmt.Errorf("'%s' is not a supported scheme", url.Scheme) return fmt.Errorf("'%s' is not a supported scheme", address.Scheme)
} }
defer r.Close() defer r.Close()
if err := json.NewDecoder(r).Decode(&s); err != nil { if err := json.NewDecoder(r).Decode(&s); err != nil {
return fmt.Errorf("failed to decode json payload from '%s': %s", url.String(), err.Error()) return fmt.Errorf("failed to decode json payload from '%s': %s", address.String(), err.Error())
} }
u.gatherStatServer(acc, &s) u.gatherStatServer(acc, &s)

View File

@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
@ -27,7 +27,7 @@ func TestGather(t *testing.T) {
run: fakeVarnishStat(smOutput), run: fakeVarnishStat(smOutput),
Stats: []string{"*"}, Stats: []string{"*"},
} }
assert.NoError(t, v.Gather(acc)) require.NoError(t, v.Gather(acc))
acc.HasMeasurement("varnish") acc.HasMeasurement("varnish")
for tag, fields := range parsedSmOutput { for tag, fields := range parsedSmOutput {
@ -43,12 +43,12 @@ func TestParseFullOutput(t *testing.T) {
run: fakeVarnishStat(fullOutput), run: fakeVarnishStat(fullOutput),
Stats: []string{"*"}, Stats: []string{"*"},
} }
assert.NoError(t, v.Gather(acc)) require.NoError(t, v.Gather(acc))
acc.HasMeasurement("varnish") acc.HasMeasurement("varnish")
flat := flatten(acc.Metrics) flat := flatten(acc.Metrics)
assert.Len(t, acc.Metrics, 6) require.Len(t, acc.Metrics, 6)
assert.Equal(t, 293, len(flat)) require.Equal(t, 293, len(flat))
} }
func TestFilterSomeStats(t *testing.T) { func TestFilterSomeStats(t *testing.T) {
@ -57,12 +57,12 @@ func TestFilterSomeStats(t *testing.T) {
run: fakeVarnishStat(fullOutput), run: fakeVarnishStat(fullOutput),
Stats: []string{"MGT.*", "VBE.*"}, Stats: []string{"MGT.*", "VBE.*"},
} }
assert.NoError(t, v.Gather(acc)) require.NoError(t, v.Gather(acc))
acc.HasMeasurement("varnish") acc.HasMeasurement("varnish")
flat := flatten(acc.Metrics) flat := flatten(acc.Metrics)
assert.Len(t, acc.Metrics, 2) require.Len(t, acc.Metrics, 2)
assert.Equal(t, 16, len(flat)) require.Equal(t, 16, len(flat))
} }
func TestFieldConfig(t *testing.T) { func TestFieldConfig(t *testing.T) {
@ -79,11 +79,11 @@ func TestFieldConfig(t *testing.T) {
run: fakeVarnishStat(fullOutput), run: fakeVarnishStat(fullOutput),
Stats: strings.Split(fieldCfg, ","), Stats: strings.Split(fieldCfg, ","),
} }
assert.NoError(t, v.Gather(acc)) require.NoError(t, v.Gather(acc))
acc.HasMeasurement("varnish") acc.HasMeasurement("varnish")
flat := flatten(acc.Metrics) flat := flatten(acc.Metrics)
assert.Equal(t, expected, len(flat)) require.Equal(t, expected, len(flat))
} }
} }

View File

@ -14,20 +14,20 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
"github.com/influxdata/telegraf/filter"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/vmware/govmomi/object" "github.com/vmware/govmomi/object"
"github.com/vmware/govmomi/performance" "github.com/vmware/govmomi/performance"
"github.com/vmware/govmomi/vim25/mo" "github.com/vmware/govmomi/vim25/mo"
"github.com/vmware/govmomi/vim25/types" "github.com/vmware/govmomi/vim25/types"
"github.com/influxdata/telegraf/filter"
) )
var isolateLUN = regexp.MustCompile(".*/([^/]+)/?$") var isolateLUN = regexp.MustCompile(`.*/([^/]+)/?$`)
var isIPv4 = regexp.MustCompile("^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$") var isIPv4 = regexp.MustCompile(`^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$`)
var isIPv6 = regexp.MustCompile("^(?:[A-Fa-f0-9]{0,4}:){1,7}[A-Fa-f0-9]{1,4}$") var isIPv6 = regexp.MustCompile(`^(?:[A-Fa-f0-9]{0,4}:){1,7}[A-Fa-f0-9]{1,4}$`)
const maxSampleConst = 10 // Absolute maximum number of samples regardless of period const maxSampleConst = 10 // Absolute maximum number of samples regardless of period
@ -115,14 +115,14 @@ func (e *Endpoint) getParent(obj *objectRef, res *resourceKind) (*objectRef, boo
// NewEndpoint returns a new connection to a vCenter based on the URL and configuration passed // NewEndpoint returns a new connection to a vCenter based on the URL and configuration passed
// as parameters. // as parameters.
func NewEndpoint(ctx context.Context, parent *VSphere, url *url.URL, log telegraf.Logger) (*Endpoint, error) { func NewEndpoint(ctx context.Context, parent *VSphere, address *url.URL, log telegraf.Logger) (*Endpoint, error) {
e := Endpoint{ e := Endpoint{
URL: url, URL: address,
Parent: parent, Parent: parent,
hwMarks: NewTSCache(hwMarkTTL), hwMarks: NewTSCache(hwMarkTTL, log),
lun2ds: make(map[string]string), lun2ds: make(map[string]string),
initialized: false, initialized: false,
clientFactory: NewClientFactory(url, parent), clientFactory: NewClientFactory(address, parent),
customAttrFilter: newFilterOrPanic(parent.CustomAttributeInclude, parent.CustomAttributeExclude), customAttrFilter: newFilterOrPanic(parent.CustomAttributeInclude, parent.CustomAttributeExclude),
customAttrEnabled: anythingEnabled(parent.CustomAttributeExclude), customAttrEnabled: anythingEnabled(parent.CustomAttributeExclude),
log: log, log: log,
@ -457,9 +457,6 @@ func (e *Endpoint) discover(ctx context.Context) error {
SendInternalCounterWithTags("discovered_objects", e.URL.Host, map[string]string{"type": res.name}, int64(len(objects))) SendInternalCounterWithTags("discovered_objects", e.URL.Host, map[string]string{"type": res.name}, int64(len(objects)))
numRes += int64(len(objects)) numRes += int64(len(objects))
} }
if err != nil {
e.log.Error(err)
}
} }
// Build lun2ds map // Build lun2ds map
@ -584,11 +581,11 @@ func (e *Endpoint) complexMetadataSelect(ctx context.Context, res *resourceKind,
te.Wait() te.Wait()
} }
func getDatacenters(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap, error) { func getDatacenters(ctx context.Context, e *Endpoint, resourceFilter *ResourceFilter) (objectMap, error) {
var resources []mo.Datacenter var resources []mo.Datacenter
ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout)) ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout))
defer cancel1() defer cancel1()
err := filter.FindAll(ctx1, &resources) err := resourceFilter.FindAll(ctx1, &resources)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -605,11 +602,11 @@ func getDatacenters(ctx context.Context, e *Endpoint, filter *ResourceFilter) (o
return m, nil return m, nil
} }
func getClusters(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap, error) { func getClusters(ctx context.Context, e *Endpoint, resourceFilter *ResourceFilter) (objectMap, error) {
var resources []mo.ClusterComputeResource var resources []mo.ClusterComputeResource
ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout)) ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout))
defer cancel1() defer cancel1()
err := filter.FindAll(ctx1, &resources) err := resourceFilter.FindAll(ctx1, &resources)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -657,9 +654,9 @@ func getClusters(ctx context.Context, e *Endpoint, filter *ResourceFilter) (obje
} }
//noinspection GoUnusedParameter //noinspection GoUnusedParameter
func getHosts(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap, error) { func getHosts(ctx context.Context, e *Endpoint, resourceFilter *ResourceFilter) (objectMap, error) {
var resources []mo.HostSystem var resources []mo.HostSystem
err := filter.FindAll(ctx, &resources) err := resourceFilter.FindAll(ctx, &resources)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -675,11 +672,11 @@ func getHosts(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectM
return m, nil return m, nil
} }
func getVMs(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap, error) { func getVMs(ctx context.Context, e *Endpoint, resourceFilter *ResourceFilter) (objectMap, error) {
var resources []mo.VirtualMachine var resources []mo.VirtualMachine
ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout)) ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout))
defer cancel1() defer cancel1()
err := filter.FindAll(ctx1, &resources) err := resourceFilter.FindAll(ctx1, &resources)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -765,11 +762,11 @@ func getVMs(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap
return m, nil return m, nil
} }
func getDatastores(ctx context.Context, e *Endpoint, filter *ResourceFilter) (objectMap, error) { func getDatastores(ctx context.Context, e *Endpoint, resourceFilter *ResourceFilter) (objectMap, error) {
var resources []mo.Datastore var resources []mo.Datastore
ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout)) ctx1, cancel1 := context.WithTimeout(ctx, time.Duration(e.Parent.Timeout))
defer cancel1() defer cancel1()
err := filter.FindAll(ctx1, &resources) err := resourceFilter.FindAll(ctx1, &resources)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -888,7 +885,7 @@ func (e *Endpoint) chunkify(ctx context.Context, res *resourceKind, now time.Tim
pqs := make(queryChunk, 0, e.Parent.MaxQueryObjects) pqs := make(queryChunk, 0, e.Parent.MaxQueryObjects)
numQs := 0 numQs := 0
for _, object := range res.objects { for _, obj := range res.objects {
timeBuckets := make(map[int64]*types.PerfQuerySpec) timeBuckets := make(map[int64]*types.PerfQuerySpec)
for metricIdx, metric := range res.metrics { for metricIdx, metric := range res.metrics {
// Determine time of last successful collection // Determine time of last successful collection
@ -897,7 +894,7 @@ func (e *Endpoint) chunkify(ctx context.Context, res *resourceKind, now time.Tim
e.log.Infof("Unable to find metric name for id %d. Skipping!", metric.CounterId) e.log.Infof("Unable to find metric name for id %d. Skipping!", metric.CounterId)
continue continue
} }
start, ok := e.hwMarks.Get(object.ref.Value, metricName) start, ok := e.hwMarks.Get(obj.ref.Value, metricName)
if !ok { if !ok {
start = latest.Add(time.Duration(-res.sampling) * time.Second * (time.Duration(e.Parent.MetricLookback) - 1)) start = latest.Add(time.Duration(-res.sampling) * time.Second * (time.Duration(e.Parent.MetricLookback) - 1))
} }
@ -907,7 +904,7 @@ func (e *Endpoint) chunkify(ctx context.Context, res *resourceKind, now time.Tim
bucket, ok := timeBuckets[start.Unix()] bucket, ok := timeBuckets[start.Unix()]
if !ok { if !ok {
bucket = &types.PerfQuerySpec{ bucket = &types.PerfQuerySpec{
Entity: object.ref, Entity: obj.ref,
MaxSample: maxSampleConst, MaxSample: maxSampleConst,
MetricId: make([]types.PerfMetricId, 0), MetricId: make([]types.PerfMetricId, 0),
IntervalId: res.sampling, IntervalId: res.sampling,
@ -1272,7 +1269,7 @@ func (e *Endpoint) populateTags(objectRef *objectRef, resourceType string, resou
} }
} }
func (e *Endpoint) makeMetricIdentifier(prefix, metric string) (string, string) { func (e *Endpoint) makeMetricIdentifier(prefix, metric string) (metricName string, fieldName string) {
parts := strings.Split(metric, ".") parts := strings.Split(metric, ".")
if len(parts) == 1 { if len(parts) == 1 {
return prefix, parts[0] return prefix, parts[0]

View File

@ -35,14 +35,14 @@ type ResourceFilter struct {
func (f *Finder) FindAll(ctx context.Context, resType string, paths, excludePaths []string, dst interface{}) error { func (f *Finder) FindAll(ctx context.Context, resType string, paths, excludePaths []string, dst interface{}) error {
objs := make(map[string]types.ObjectContent) objs := make(map[string]types.ObjectContent)
for _, p := range paths { for _, p := range paths {
if err := f.find(ctx, resType, p, objs); err != nil { if err := f.findResources(ctx, resType, p, objs); err != nil {
return err return err
} }
} }
if len(excludePaths) > 0 { if len(excludePaths) > 0 {
excludes := make(map[string]types.ObjectContent) excludes := make(map[string]types.ObjectContent)
for _, p := range excludePaths { for _, p := range excludePaths {
if err := f.find(ctx, resType, p, excludes); err != nil { if err := f.findResources(ctx, resType, p, excludes); err != nil {
return err return err
} }
} }
@ -56,14 +56,14 @@ func (f *Finder) FindAll(ctx context.Context, resType string, paths, excludePath
// Find returns the resources matching the specified path. // Find returns the resources matching the specified path.
func (f *Finder) Find(ctx context.Context, resType, path string, dst interface{}) error { func (f *Finder) Find(ctx context.Context, resType, path string, dst interface{}) error {
objs := make(map[string]types.ObjectContent) objs := make(map[string]types.ObjectContent)
err := f.find(ctx, resType, path, objs) err := f.findResources(ctx, resType, path, objs)
if err != nil { if err != nil {
return err return err
} }
return objectContentToTypedArray(objs, dst) return objectContentToTypedArray(objs, dst)
} }
func (f *Finder) find(ctx context.Context, resType, path string, objs map[string]types.ObjectContent) error { func (f *Finder) findResources(ctx context.Context, resType, path string, objs map[string]types.ObjectContent) error {
p := strings.Split(path, "/") p := strings.Split(path, "/")
flt := make([]property.Filter, len(p)-1) flt := make([]property.Filter, len(p)-1)
for i := 1; i < len(p); i++ { for i := 1; i < len(p); i++ {
@ -107,7 +107,7 @@ func (f *Finder) descend(ctx context.Context, root types.ManagedObjectReference,
fields := []string{"name"} fields := []string{"name"}
recurse := tokens[pos]["name"] == "**" recurse := tokens[pos]["name"] == "**"
types := ct objectTypes := ct
if isLeaf { if isLeaf {
if af, ok := addFields[resType]; ok { if af, ok := addFields[resType]; ok {
fields = append(fields, af...) fields = append(fields, af...)
@ -131,9 +131,9 @@ func (f *Finder) descend(ctx context.Context, root types.ManagedObjectReference,
} }
return nil return nil
} }
types = []string{resType} // Only load wanted object type at leaf level objectTypes = []string{resType} // Only load wanted object type at leaf level
} }
err = v.Retrieve(ctx, types, fields, &content) err = v.Retrieve(ctx, objectTypes, fields, &content)
if err != nil { if err != nil {
return err return err
} }

View File

@ -1,9 +1,10 @@
package vsphere package vsphere
import ( import (
"log"
"sync" "sync"
"time" "time"
"github.com/influxdata/telegraf"
) )
// TSCache is a cache of timestamps used to determine the validity of datapoints // TSCache is a cache of timestamps used to determine the validity of datapoints
@ -11,13 +12,15 @@ type TSCache struct {
ttl time.Duration ttl time.Duration
table map[string]time.Time table map[string]time.Time
mux sync.RWMutex mux sync.RWMutex
log telegraf.Logger
} }
// NewTSCache creates a new TSCache with a specified time-to-live after which timestamps are discarded. // NewTSCache creates a new TSCache with a specified time-to-live after which timestamps are discarded.
func NewTSCache(ttl time.Duration) *TSCache { func NewTSCache(ttl time.Duration, log telegraf.Logger) *TSCache {
return &TSCache{ return &TSCache{
ttl: ttl, ttl: ttl,
table: make(map[string]time.Time), table: make(map[string]time.Time),
log: log,
} }
} }
@ -32,7 +35,7 @@ func (t *TSCache) Purge() {
n++ n++
} }
} }
log.Printf("D! [inputs.vsphere] purged timestamp cache. %d deleted with %d remaining", n, len(t.table)) t.log.Debugf("purged timestamp cache. %d deleted with %d remaining", n, len(t.table))
} }
// IsNew returns true if the supplied timestamp for the supplied key is more recent than the // IsNew returns true if the supplied timestamp for the supplied key is more recent than the
@ -56,10 +59,10 @@ func (t *TSCache) Get(key string, metricName string) (time.Time, bool) {
} }
// Put updates the latest timestamp for the supplied key. // Put updates the latest timestamp for the supplied key.
func (t *TSCache) Put(key string, metricName string, time time.Time) { func (t *TSCache) Put(key string, metricName string, timestamp time.Time) {
t.mux.Lock() t.mux.Lock()
defer t.mux.Unlock() defer t.mux.Unlock()
t.table[makeKey(key, metricName)] = time t.table[makeKey(key, metricName)] = timestamp
} }
func makeKey(resource string, metric string) string { func makeKey(resource string, metric string) string {

View File

@ -11,15 +11,16 @@ import (
"time" "time"
"unsafe" "unsafe"
"github.com/influxdata/telegraf/config"
itls "github.com/influxdata/telegraf/plugins/common/tls"
"github.com/influxdata/telegraf/testutil"
"github.com/influxdata/toml" "github.com/influxdata/toml"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vmware/govmomi/object" "github.com/vmware/govmomi/object"
"github.com/vmware/govmomi/simulator" "github.com/vmware/govmomi/simulator"
"github.com/vmware/govmomi/vim25/mo" "github.com/vmware/govmomi/vim25/mo"
"github.com/vmware/govmomi/vim25/types" "github.com/vmware/govmomi/vim25/types"
"github.com/influxdata/telegraf/config"
itls "github.com/influxdata/telegraf/plugins/common/tls"
"github.com/influxdata/telegraf/testutil"
) )
var configHeader = ` var configHeader = `
@ -229,7 +230,6 @@ func TestParseConfig(t *testing.T) {
tab, err := toml.Parse([]byte(c)) tab, err := toml.Parse([]byte(c))
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, tab) require.NotNil(t, tab)
} }
func TestConfigDurationParsing(t *testing.T) { func TestConfigDurationParsing(t *testing.T) {
@ -313,6 +313,7 @@ func TestFinder(t *testing.T) {
ctx := context.Background() ctx := context.Background()
c, err := NewClient(ctx, s.URL, v) c, err := NewClient(ctx, s.URL, v)
require.NoError(t, err)
f := Finder{c} f := Finder{c}
@ -429,6 +430,7 @@ func TestFolders(t *testing.T) {
v := defaultVSphere() v := defaultVSphere()
c, err := NewClient(ctx, s.URL, v) c, err := NewClient(ctx, s.URL, v)
require.NoError(t, err)
f := Finder{c} f := Finder{c}
@ -449,7 +451,7 @@ func TestFolders(t *testing.T) {
testLookupVM(ctx, t, &f, "/F0/DC1/vm/**/F*/**", 4, "") testLookupVM(ctx, t, &f, "/F0/DC1/vm/**/F*/**", 4, "")
} }
func TestCollection(t *testing.T) { func TestCollectionWithClusterMetrics(t *testing.T) {
testCollection(t, false) testCollection(t, false)
} }

View File

@ -6,14 +6,13 @@ package win_perf_counters
import ( import (
"errors" "errors"
"fmt" "fmt"
"strings"
"testing" "testing"
"time" "time"
"strings" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
func TestWinPerformanceQueryImplIntegration(t *testing.T) { func TestWinPerformanceQueryImplIntegration(t *testing.T) {
@ -30,15 +29,15 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
_, err = query.AddCounterToQuery("") _, err = query.AddCounterToQuery("")
require.Error(t, err, "uninitialized query must return errors") require.Error(t, err, "uninitialized query must return errors")
assert.True(t, strings.Contains(err.Error(), "uninitialized")) require.True(t, strings.Contains(err.Error(), "uninitialized"))
_, err = query.AddEnglishCounterToQuery("") _, err = query.AddEnglishCounterToQuery("")
require.Error(t, err, "uninitialized query must return errors") require.Error(t, err, "uninitialized query must return errors")
assert.True(t, strings.Contains(err.Error(), "uninitialized")) require.True(t, strings.Contains(err.Error(), "uninitialized"))
err = query.CollectData() err = query.CollectData()
require.Error(t, err, "uninitialized query must return errors") require.Error(t, err, "uninitialized query must return errors")
assert.True(t, strings.Contains(err.Error(), "uninitialized")) require.True(t, strings.Contains(err.Error(), "uninitialized"))
err = query.Open() err = query.Open()
require.NoError(t, err) require.NoError(t, err)
@ -47,7 +46,7 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
hCounter, err = query.AddCounterToQuery(counterPath) hCounter, err = query.AddCounterToQuery(counterPath)
require.NoError(t, err) require.NoError(t, err)
assert.NotEqual(t, 0, hCounter) require.NotEqual(t, 0, hCounter)
err = query.Close() err = query.Close()
require.NoError(t, err) require.NoError(t, err)
@ -57,11 +56,11 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
hCounter, err = query.AddEnglishCounterToQuery(counterPath) hCounter, err = query.AddEnglishCounterToQuery(counterPath)
require.NoError(t, err) require.NoError(t, err)
assert.NotEqual(t, 0, hCounter) require.NotEqual(t, 0, hCounter)
cp, err := query.GetCounterPath(hCounter) cp, err := query.GetCounterPath(hCounter)
require.NoError(t, err) require.NoError(t, err)
assert.True(t, strings.HasSuffix(cp, counterPath)) require.True(t, strings.HasSuffix(cp, counterPath))
err = query.CollectData() err = query.CollectData()
require.NoError(t, err) require.NoError(t, err)
@ -76,19 +75,19 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
now := time.Now() now := time.Now()
mtime, err := query.CollectDataWithTime() mtime, err := query.CollectDataWithTime()
require.NoError(t, err) require.NoError(t, err)
assert.True(t, mtime.Sub(now) < time.Second) require.True(t, mtime.Sub(now) < time.Second)
counterPath = "\\Process(*)\\% Processor Time" counterPath = "\\Process(*)\\% Processor Time"
paths, err := query.ExpandWildCardPath(counterPath) paths, err := query.ExpandWildCardPath(counterPath)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, paths) require.NotNil(t, paths)
assert.True(t, len(paths) > 1) require.True(t, len(paths) > 1)
counterPath = "\\Process(_Total)\\*" counterPath = "\\Process(_Total)\\*"
paths, err = query.ExpandWildCardPath(counterPath) paths, err = query.ExpandWildCardPath(counterPath)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, paths) require.NotNil(t, paths)
assert.True(t, len(paths) > 1) require.True(t, len(paths) > 1)
err = query.Open() err = query.Open()
require.NoError(t, err) require.NoError(t, err)
@ -96,7 +95,7 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
counterPath = "\\Process(*)\\% Processor Time" counterPath = "\\Process(*)\\% Processor Time"
hCounter, err = query.AddEnglishCounterToQuery(counterPath) hCounter, err = query.AddEnglishCounterToQuery(counterPath)
require.NoError(t, err) require.NoError(t, err)
assert.NotEqual(t, 0, hCounter) require.NotEqual(t, 0, hCounter)
err = query.CollectData() err = query.CollectData()
require.NoError(t, err) require.NoError(t, err)
@ -111,7 +110,7 @@ func TestWinPerformanceQueryImplIntegration(t *testing.T) {
arr, err = query.GetFormattedCounterArrayDouble(hCounter) arr, err = query.GetFormattedCounterArrayDouble(hCounter)
} }
require.NoError(t, err) require.NoError(t, err)
assert.True(t, len(arr) > 0, "Too") require.True(t, len(arr) > 0, "Too")
err = query.Close() err = query.Close()
require.NoError(t, err) require.NoError(t, err)
@ -566,11 +565,11 @@ func TestWinPerfcountersCollect1Integration(t *testing.T) {
time.Sleep(2000 * time.Millisecond) time.Sleep(2000 * time.Millisecond)
err = m.Gather(&acc) err = m.Gather(&acc)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc.Metrics, 2) require.Len(t, acc.Metrics, 2)
for _, metric := range acc.Metrics { for _, metric := range acc.Metrics {
_, ok := metric.Fields[expectedCounter] _, ok := metric.Fields[expectedCounter]
assert.True(t, ok) require.True(t, ok)
} }
} }
@ -613,11 +612,11 @@ func TestWinPerfcountersCollect2Integration(t *testing.T) {
err = m.Gather(&acc) err = m.Gather(&acc)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc.Metrics, 4) require.Len(t, acc.Metrics, 4)
for _, metric := range acc.Metrics { for _, metric := range acc.Metrics {
_, ok := metric.Fields[expectedCounter] _, ok := metric.Fields[expectedCounter]
assert.True(t, ok) require.True(t, ok)
} }
} }

View File

@ -9,10 +9,10 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
type testCounter struct { type testCounter struct {
@ -237,7 +237,7 @@ func TestCounterPathParsing(t *testing.T) {
for path, vals := range counterPathsAndRes { for path, vals := range counterPathsAndRes {
o, i, c, err := extractCounterInfoFromCounterPath(path) o, i, c, err := extractCounterInfoFromCounterPath(path)
require.NoError(t, err) require.NoError(t, err)
require.True(t, assert.ObjectsAreEqual(vals, []string{o, i, c}), "arrays: %#v and %#v are not equal", vals, []string{o, i, c}) require.Equalf(t, vals, []string{o, i, c}, "arrays: %#v and %#v are not equal", vals, []string{o, i, c})
} }
for _, path := range invalidCounterPaths { for _, path := range invalidCounterPaths {
_, _, _, err := extractCounterInfoFromCounterPath(path) _, _, _, err := extractCounterInfoFromCounterPath(path)
@ -312,7 +312,7 @@ func TestParseConfigBasic(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
@ -323,7 +323,7 @@ func TestParseConfigBasic(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
} }
@ -349,7 +349,7 @@ func TestParseConfigNoInstance(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
@ -360,7 +360,7 @@ func TestParseConfigNoInstance(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
} }
@ -456,7 +456,7 @@ func TestParseConfigTotalExpansion(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
@ -478,7 +478,7 @@ func TestParseConfigTotalExpansion(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
} }
@ -503,7 +503,7 @@ func TestParseConfigExpand(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = m.ParseConfig() err = m.ParseConfig()
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
err = m.query.Close() err = m.query.Close()
require.NoError(t, err) require.NoError(t, err)
} }
@ -629,7 +629,7 @@ func TestSimpleGatherWithTimestamp(t *testing.T) {
"objectname": "O", "objectname": "O",
} }
acc1.AssertContainsTaggedFields(t, measurement, fields1, tags1) acc1.AssertContainsTaggedFields(t, measurement, fields1, tags1)
assert.True(t, acc1.HasTimestamp(measurement, MetricTime)) require.True(t, acc1.HasTimestamp(measurement, MetricTime))
} }
func TestGatherError(t *testing.T) { func TestGatherError(t *testing.T) {
@ -739,9 +739,9 @@ func TestGatherRefreshingWithExpansion(t *testing.T) {
} }
var acc1 testutil.Accumulator var acc1 testutil.Accumulator
err = m.Gather(&acc1) err = m.Gather(&acc1)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc1.Metrics, 2) require.Len(t, acc1.Metrics, 2)
fields1 := map[string]interface{}{ fields1 := map[string]interface{}{
"C1": float32(1.1), "C1": float32(1.1),
@ -786,8 +786,8 @@ func TestGatherRefreshingWithExpansion(t *testing.T) {
//test before elapsing CounterRefreshRate counters are not refreshed //test before elapsing CounterRefreshRate counters are not refreshed
err = m.Gather(&acc2) err = m.Gather(&acc2)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 4) require.Len(t, m.counters, 4)
assert.Len(t, acc2.Metrics, 2) require.Len(t, acc2.Metrics, 2)
acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1) acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1)
acc2.AssertContainsTaggedFields(t, measurement, fields2, tags2) acc2.AssertContainsTaggedFields(t, measurement, fields2, tags2)
@ -797,7 +797,7 @@ func TestGatherRefreshingWithExpansion(t *testing.T) {
var acc3 testutil.Accumulator var acc3 testutil.Accumulator
err = m.Gather(&acc3) err = m.Gather(&acc3)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc3.Metrics, 3) require.Len(t, acc3.Metrics, 3)
acc3.AssertContainsTaggedFields(t, measurement, fields1, tags1) acc3.AssertContainsTaggedFields(t, measurement, fields1, tags1)
acc3.AssertContainsTaggedFields(t, measurement, fields2, tags2) acc3.AssertContainsTaggedFields(t, measurement, fields2, tags2)
@ -831,9 +831,9 @@ func TestGatherRefreshingWithoutExpansion(t *testing.T) {
CountersRefreshInterval: config.Duration(time.Second * 10)} CountersRefreshInterval: config.Duration(time.Second * 10)}
var acc1 testutil.Accumulator var acc1 testutil.Accumulator
err = m.Gather(&acc1) err = m.Gather(&acc1)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc1.Metrics, 2) require.Len(t, acc1.Metrics, 2)
fields1 := map[string]interface{}{ fields1 := map[string]interface{}{
"C1": float32(1.1), "C1": float32(1.1),
@ -880,8 +880,8 @@ func TestGatherRefreshingWithoutExpansion(t *testing.T) {
//test before elapsing CounterRefreshRate counters are not refreshed //test before elapsing CounterRefreshRate counters are not refreshed
err = m.Gather(&acc2) err = m.Gather(&acc2)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
assert.Len(t, acc2.Metrics, 3) require.Len(t, acc2.Metrics, 3)
acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1) acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1)
acc2.AssertContainsTaggedFields(t, measurement, fields2, tags2) acc2.AssertContainsTaggedFields(t, measurement, fields2, tags2)
@ -908,7 +908,7 @@ func TestGatherRefreshingWithoutExpansion(t *testing.T) {
var acc3 testutil.Accumulator var acc3 testutil.Accumulator
err = m.Gather(&acc3) err = m.Gather(&acc3)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, acc3.Metrics, 2) require.Len(t, acc3.Metrics, 2)
fields4 := map[string]interface{}{ fields4 := map[string]interface{}{
"C1": float32(1.1), "C1": float32(1.1),
"C2": float32(1.2), "C2": float32(1.2),
@ -954,8 +954,8 @@ func TestGatherTotalNoExpansion(t *testing.T) {
var acc1 testutil.Accumulator var acc1 testutil.Accumulator
err = m.Gather(&acc1) err = m.Gather(&acc1)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
assert.Len(t, acc1.Metrics, 2) require.Len(t, acc1.Metrics, 2)
fields1 := map[string]interface{}{ fields1 := map[string]interface{}{
"C1": float32(1.1), "C1": float32(1.1),
"C2": float32(1.2), "C2": float32(1.2),
@ -984,8 +984,8 @@ func TestGatherTotalNoExpansion(t *testing.T) {
var acc2 testutil.Accumulator var acc2 testutil.Accumulator
err = m.Gather(&acc2) err = m.Gather(&acc2)
require.NoError(t, err) require.NoError(t, err)
assert.Len(t, m.counters, 2) require.Len(t, m.counters, 2)
assert.Len(t, acc2.Metrics, 1) require.Len(t, acc2.Metrics, 1)
acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1) acc2.AssertContainsTaggedFields(t, measurement, fields1, tags1)
@ -1013,14 +1013,14 @@ var stringArraySingleItem = []string{
func TestUTF16ToStringArray(t *testing.T) { func TestUTF16ToStringArray(t *testing.T) {
singleItem := UTF16ToStringArray(unicodeStringListSingleItem) singleItem := UTF16ToStringArray(unicodeStringListSingleItem)
assert.True(t, assert.ObjectsAreEqual(singleItem, stringArraySingleItem), "Not equal single arrays") require.Equal(t, singleItem, stringArraySingleItem, "Not equal single arrays")
noItem := UTF16ToStringArray(unicodeStringListNoItem) noItem := UTF16ToStringArray(unicodeStringListNoItem)
assert.Nil(t, noItem) require.Nil(t, noItem)
engStrings := UTF16ToStringArray(unicodeStringListWithEnglishChars) engStrings := UTF16ToStringArray(unicodeStringListWithEnglishChars)
assert.True(t, assert.ObjectsAreEqual(engStrings, stringArrayWithEnglishChars), "Not equal eng arrays") require.Equal(t, engStrings, stringArrayWithEnglishChars, "Not equal eng arrays")
czechStrings := UTF16ToStringArray(unicodeStringListWithCzechChars) czechStrings := UTF16ToStringArray(unicodeStringListWithCzechChars)
assert.True(t, assert.ObjectsAreEqual(czechStrings, stringArrayWithCzechChars), "Not equal czech arrays") require.Equal(t, czechStrings, stringArrayWithCzechChars, "Not equal czech arrays")
} }

View File

@ -10,11 +10,11 @@ import (
"log" "log"
"testing" "testing"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"golang.org/x/sys/windows/svc" "golang.org/x/sys/windows/svc"
"golang.org/x/sys/windows/svc/mgr" "golang.org/x/sys/windows/svc/mgr"
"github.com/influxdata/telegraf/testutil"
) )
//testData is DD wrapper for unit testing of WinServices //testData is DD wrapper for unit testing of WinServices
@ -136,8 +136,8 @@ func TestBasicInfo(t *testing.T) {
mgrProvider: &FakeMgProvider{testErrors[0]}, mgrProvider: &FakeMgProvider{testErrors[0]},
} }
winServices.Init() winServices.Init()
assert.NotEmpty(t, winServices.SampleConfig()) require.NotEmpty(t, winServices.SampleConfig())
assert.NotEmpty(t, winServices.Description()) require.NotEmpty(t, winServices.Description())
} }
func TestMgrErrors(t *testing.T) { func TestMgrErrors(t *testing.T) {
@ -149,7 +149,7 @@ func TestMgrErrors(t *testing.T) {
var acc1 testutil.Accumulator var acc1 testutil.Accumulator
err := winServices.Gather(&acc1) err := winServices.Gather(&acc1)
require.Error(t, err) require.Error(t, err)
assert.Contains(t, err.Error(), testErrors[0].mgrConnectError.Error()) require.Contains(t, err.Error(), testErrors[0].mgrConnectError.Error())
////mgr.listServices error ////mgr.listServices error
winServices = &WinServices{ winServices = &WinServices{
@ -159,7 +159,7 @@ func TestMgrErrors(t *testing.T) {
var acc2 testutil.Accumulator var acc2 testutil.Accumulator
err = winServices.Gather(&acc2) err = winServices.Gather(&acc2)
require.Error(t, err) require.Error(t, err)
assert.Contains(t, err.Error(), testErrors[1].mgrListServicesError.Error()) require.Contains(t, err.Error(), testErrors[1].mgrListServicesError.Error())
////mgr.listServices error 2 ////mgr.listServices error 2
winServices = &WinServices{ winServices = &WinServices{
@ -213,7 +213,7 @@ func TestGatherContainsTag(t *testing.T) {
winServices.Init() winServices.Init()
var acc1 testutil.Accumulator var acc1 testutil.Accumulator
require.NoError(t, winServices.Gather(&acc1)) require.NoError(t, winServices.Gather(&acc1))
assert.Len(t, acc1.Errors, 0, "There should be no errors after gather") require.Len(t, acc1.Errors, 0, "There should be no errors after gather")
for _, s := range testSimpleData[0].services { for _, s := range testSimpleData[0].services {
fields := make(map[string]interface{}) fields := make(map[string]interface{})

View File

@ -2,12 +2,12 @@ package wireguard
import ( import (
"fmt" "fmt"
"log"
"golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/inputs" "github.com/influxdata/telegraf/plugins/inputs"
"golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
) )
const ( const (
@ -26,7 +26,8 @@ var (
// Wireguard is an input that enumerates all Wireguard interfaces/devices on // Wireguard is an input that enumerates all Wireguard interfaces/devices on
// the host, and reports gauge metrics for the device itself and its peers. // the host, and reports gauge metrics for the device itself and its peers.
type Wireguard struct { type Wireguard struct {
Devices []string `toml:"devices"` Devices []string `toml:"devices"`
Log telegraf.Logger `toml:"-"`
client *wgctrl.Client client *wgctrl.Client
} }
@ -81,7 +82,7 @@ func (wg *Wireguard) enumerateDevices() ([]*wgtypes.Device, error) {
for _, name := range wg.Devices { for _, name := range wg.Devices {
dev, err := wg.client.Device(name) dev, err := wg.client.Device(name)
if err != nil { if err != nil {
log.Printf("W! [inputs.wireguard] No Wireguard device found with name %s", name) wg.Log.Warnf("No Wireguard device found with name %s", name)
continue continue
} }

View File

@ -5,9 +5,10 @@ import (
"testing" "testing"
"time" "time"
"github.com/influxdata/telegraf/testutil" "github.com/stretchr/testify/require"
"github.com/stretchr/testify/assert"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"github.com/influxdata/telegraf/testutil"
) )
func TestWireguard_gatherDeviceMetrics(t *testing.T) { func TestWireguard_gatherDeviceMetrics(t *testing.T) {
@ -36,7 +37,7 @@ func TestWireguard_gatherDeviceMetrics(t *testing.T) {
wg.gatherDeviceMetrics(&acc, device) wg.gatherDeviceMetrics(&acc, device)
assert.Equal(t, 3, acc.NFields()) require.Equal(t, 3, acc.NFields())
acc.AssertDoesNotContainMeasurement(t, measurementPeer) acc.AssertDoesNotContainMeasurement(t, measurementPeer)
acc.AssertContainsTaggedFields(t, measurementDevice, expectFields, expectTags) acc.AssertContainsTaggedFields(t, measurementDevice, expectFields, expectTags)
acc.AssertContainsTaggedFields(t, measurementDevice, expectGauges, expectTags) acc.AssertContainsTaggedFields(t, measurementDevice, expectGauges, expectTags)
@ -77,7 +78,7 @@ func TestWireguard_gatherDevicePeerMetrics(t *testing.T) {
wg.gatherDevicePeerMetrics(&acc, device, peer) wg.gatherDevicePeerMetrics(&acc, device, peer)
assert.Equal(t, 6, acc.NFields()) require.Equal(t, 6, acc.NFields())
acc.AssertDoesNotContainMeasurement(t, measurementDevice) acc.AssertDoesNotContainMeasurement(t, measurementDevice)
acc.AssertContainsTaggedFields(t, measurementPeer, expectFields, expectTags) acc.AssertContainsTaggedFields(t, measurementPeer, expectFields, expectTags)
acc.AssertContainsTaggedFields(t, measurementPeer, expectGauges, expectTags) acc.AssertContainsTaggedFields(t, measurementPeer, expectGauges, expectTags)

View File

@ -5,7 +5,6 @@ package wireless
import ( import (
"bytes" "bytes"
"log"
"os" "os"
"path" "path"
"strconv" "strconv"
@ -51,7 +50,7 @@ func (w *Wireless) Gather(acc telegraf.Accumulator) error {
return err return err
} }
interfaces, err := loadWirelessTable(table) interfaces, err := w.loadWirelessTable(table)
if err != nil { if err != nil {
return err return err
} }
@ -80,8 +79,8 @@ func (w *Wireless) Gather(acc telegraf.Accumulator) error {
return nil return nil
} }
func loadWirelessTable(table []byte) ([]*wirelessInterface, error) { func (w *Wireless) loadWirelessTable(table []byte) ([]*wirelessInterface, error) {
var w []*wirelessInterface var wi []*wirelessInterface
lines := bytes.Split(table, newLineByte) lines := bytes.Split(table, newLineByte)
// iterate over interfaces // iterate over interfaces
@ -99,10 +98,10 @@ func loadWirelessTable(table []byte) ([]*wirelessInterface, error) {
values = append(values, v) values = append(values, v)
} }
if len(values) != interfaceFieldLength { if len(values) != interfaceFieldLength {
log.Printf("E! [input.wireless] invalid length of interface values") w.Log.Error("invalid length of interface values")
continue continue
} }
w = append(w, &wirelessInterface{ wi = append(wi, &wirelessInterface{
Interface: strings.Trim(fields[0], ":"), Interface: strings.Trim(fields[0], ":"),
Status: values[0], Status: values[0],
Link: values[1], Link: values[1],
@ -116,7 +115,7 @@ func loadWirelessTable(table []byte) ([]*wirelessInterface, error) {
Beacon: values[9], Beacon: values[9],
}) })
} }
return w, nil return wi, nil
} }
// loadPath can be used to read path firstly from config // loadPath can be used to read path firstly from config
@ -128,13 +127,13 @@ func (w *Wireless) loadPath() {
} }
// proc can be used to read file paths from env // proc can be used to read file paths from env
func proc(env, path string) string { func proc(env, defaultPath string) string {
// try to read full file path // try to read full file path
if p := os.Getenv(env); p != "" { if p := os.Getenv(env); p != "" {
return p return p
} }
// return default path // return default path
return path return defaultPath
} }
func init() { func init() {

View File

@ -6,7 +6,9 @@ package wireless
import ( import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
) )
var testInput = []byte(`Inter-| sta-| Quality | Discarded packets | Missed | WE var testInput = []byte(`Inter-| sta-| Quality | Discarded packets | Missed | WE
@ -43,11 +45,13 @@ func TestLoadWirelessTable(t *testing.T) {
Beacon: int64(0), Beacon: int64(0),
}, },
} }
metrics, err := loadWirelessTable(testInput)
if err != nil {
t.Fatal(err)
}
as := assert.New(t) w := Wireless{
Log: testutil.Logger{},
}
metrics, err := w.loadWirelessTable(testInput)
require.NoError(t, err)
as := require.New(t)
as.Equal(metrics, expectedMetrics) as.Equal(metrics, expectedMetrics)
} }

View File

@ -14,8 +14,6 @@ import (
"time" "time"
"github.com/pion/dtls/v2" "github.com/pion/dtls/v2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
@ -199,30 +197,28 @@ func TestTags(t *testing.T) {
acc := testutil.Accumulator{} acc := testutil.Accumulator{}
require.NoError(t, sc.Gather(&acc)) require.NoError(t, sc.Gather(&acc))
assert.True(t, acc.HasMeasurement("x509_cert")) require.True(t, acc.HasMeasurement("x509_cert"))
assert.True(t, acc.HasTag("x509_cert", "common_name")) require.True(t, acc.HasTag("x509_cert", "common_name"))
assert.Equal(t, "server.localdomain", acc.TagValue("x509_cert", "common_name")) require.Equal(t, "server.localdomain", acc.TagValue("x509_cert", "common_name"))
assert.True(t, acc.HasTag("x509_cert", "signature_algorithm")) require.True(t, acc.HasTag("x509_cert", "signature_algorithm"))
assert.Equal(t, "SHA256-RSA", acc.TagValue("x509_cert", "signature_algorithm")) require.Equal(t, "SHA256-RSA", acc.TagValue("x509_cert", "signature_algorithm"))
assert.True(t, acc.HasTag("x509_cert", "public_key_algorithm")) require.True(t, acc.HasTag("x509_cert", "public_key_algorithm"))
assert.Equal(t, "RSA", acc.TagValue("x509_cert", "public_key_algorithm")) require.Equal(t, "RSA", acc.TagValue("x509_cert", "public_key_algorithm"))
assert.True(t, acc.HasTag("x509_cert", "issuer_common_name")) require.True(t, acc.HasTag("x509_cert", "issuer_common_name"))
assert.Equal(t, "Telegraf Test CA", acc.TagValue("x509_cert", "issuer_common_name")) require.Equal(t, "Telegraf Test CA", acc.TagValue("x509_cert", "issuer_common_name"))
assert.True(t, acc.HasTag("x509_cert", "san")) require.True(t, acc.HasTag("x509_cert", "san"))
assert.Equal(t, "localhost,127.0.0.1", acc.TagValue("x509_cert", "san")) require.Equal(t, "localhost,127.0.0.1", acc.TagValue("x509_cert", "san"))
assert.True(t, acc.HasTag("x509_cert", "serial_number")) require.True(t, acc.HasTag("x509_cert", "serial_number"))
serialNumber := new(big.Int) serialNumber := new(big.Int)
_, validSerialNumber := serialNumber.SetString(acc.TagValue("x509_cert", "serial_number"), 16) _, validSerialNumber := serialNumber.SetString(acc.TagValue("x509_cert", "serial_number"), 16)
if !validSerialNumber { require.Truef(t, validSerialNumber, "Expected a valid Hex serial number but got %s", acc.TagValue("x509_cert", "serial_number"))
t.Errorf("Expected a valid Hex serial number but got %s", acc.TagValue("x509_cert", "serial_number")) require.Equal(t, big.NewInt(1), serialNumber)
}
assert.Equal(t, big.NewInt(1), serialNumber)
} }
func TestGatherChain(t *testing.T) { func TestGatherChain(t *testing.T) {
@ -288,8 +284,8 @@ func TestGatherUDPCert(t *testing.T) {
var acc testutil.Accumulator var acc testutil.Accumulator
require.NoError(t, m.Gather(&acc)) require.NoError(t, m.Gather(&acc))
assert.Len(t, acc.Errors, 0) require.Len(t, acc.Errors, 0)
assert.True(t, acc.HasMeasurement("x509_cert")) require.True(t, acc.HasMeasurement("x509_cert"))
} }
func TestStrings(t *testing.T) { func TestStrings(t *testing.T) {
@ -328,7 +324,7 @@ func TestGatherCertIntegration(t *testing.T) {
var acc testutil.Accumulator var acc testutil.Accumulator
require.NoError(t, m.Gather(&acc)) require.NoError(t, m.Gather(&acc))
assert.True(t, acc.HasMeasurement("x509_cert")) require.True(t, acc.HasMeasurement("x509_cert"))
} }
func TestGatherCertMustNotTimeout(t *testing.T) { func TestGatherCertMustNotTimeout(t *testing.T) {
@ -345,7 +341,7 @@ func TestGatherCertMustNotTimeout(t *testing.T) {
var acc testutil.Accumulator var acc testutil.Accumulator
require.NoError(t, m.Gather(&acc)) require.NoError(t, m.Gather(&acc))
require.Empty(t, acc.Errors) require.Empty(t, acc.Errors)
assert.True(t, acc.HasMeasurement("x509_cert")) require.True(t, acc.HasMeasurement("x509_cert"))
} }
func TestSourcesToURLs(t *testing.T) { func TestSourcesToURLs(t *testing.T) {
@ -354,8 +350,8 @@ func TestSourcesToURLs(t *testing.T) {
} }
require.NoError(t, m.Init()) require.NoError(t, m.Init())
assert.Equal(t, len(m.globpaths), 2) require.Equal(t, len(m.globpaths), 2)
assert.Equal(t, len(m.locations), 2) require.Equal(t, len(m.locations), 2)
} }
func TestServerName(t *testing.T) { func TestServerName(t *testing.T) {
@ -385,11 +381,11 @@ func TestServerName(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
actual, err := sc.serverName(u) actual, err := sc.serverName(u)
if test.err { if test.err {
assert.Error(t, err) require.Error(t, err)
} else { } else {
assert.NoError(t, err) require.NoError(t, err)
} }
assert.Equal(t, test.expected, actual) require.Equal(t, test.expected, actual)
}) })
} }
} }

View File

@ -9,6 +9,7 @@ import (
"sync" "sync"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/inputs" "github.com/influxdata/telegraf/plugins/inputs"
"github.com/influxdata/telegraf/plugins/inputs/zipkin/trace" "github.com/influxdata/telegraf/plugins/inputs/zipkin/trace"
@ -108,8 +109,8 @@ func (z *Zipkin) Start(acc telegraf.Accumulator) error {
z.address = ln.Addr().String() z.address = ln.Addr().String()
z.Log.Infof("Started the zipkin listener on %s", z.address) z.Log.Infof("Started the zipkin listener on %s", z.address)
wg.Add(1)
go func() { go func() {
wg.Add(1)
defer wg.Done() defer wg.Done()
z.Listen(ln, acc) z.Listen(ln, acc)
@ -140,7 +141,7 @@ func (z *Zipkin) Listen(ln net.Listener, acc telegraf.Accumulator) {
// This interferes with telegraf's internal data collection, // This interferes with telegraf's internal data collection,
// by making it appear as if a serious error occurred. // by making it appear as if a serious error occurred.
if err != http.ErrServerClosed { if err != http.ErrServerClosed {
acc.AddError(fmt.Errorf("E! Error listening: %v", err)) acc.AddError(fmt.Errorf("error listening: %v", err))
} }
} }
} }

View File

@ -9,6 +9,7 @@ import (
"time" "time"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
) )
@ -649,10 +650,12 @@ func postThriftData(datafile, address, contentType string) error {
req.Header.Set("Content-Type", contentType) req.Header.Set("Content-Type", contentType)
client := &http.Client{} client := &http.Client{}
_, err = client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return fmt.Errorf("HTTP POST request to zipkin endpoint %s failed %v", address, err) return fmt.Errorf("HTTP POST request to zipkin endpoint %s failed %v", address, err)
} }
defer resp.Body.Close()
return nil return nil
} }

View File

@ -3,9 +3,9 @@ package zookeeper
import ( import (
"testing" "testing"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
) )
func TestZookeeperGeneratesMetricsIntegration(t *testing.T) { func TestZookeeperGeneratesMetricsIntegration(t *testing.T) {
@ -37,6 +37,6 @@ func TestZookeeperGeneratesMetricsIntegration(t *testing.T) {
} }
for _, metric := range intMetrics { for _, metric := range intMetrics {
assert.True(t, acc.HasInt64Field("zookeeper", metric), metric) require.True(t, acc.HasInt64Field("zookeeper", metric), metric)
} }
} }