Merge branch 'update_net_response'
This commit is contained in:
commit
fa04e539ff
|
@ -1,11 +1,12 @@
|
||||||
# Network Response Input Plugin
|
# Network Response Input Plugin
|
||||||
|
|
||||||
The input plugin test UDP/TCP connections response time.
|
The input plugin test UDP/TCP connections response time and can optional
|
||||||
It can also check response text.
|
verify text in the response.
|
||||||
|
|
||||||
### Configuration:
|
### Configuration:
|
||||||
|
|
||||||
```
|
```toml
|
||||||
|
# Collect response time of a TCP or UDP connection
|
||||||
[[inputs.net_response]]
|
[[inputs.net_response]]
|
||||||
## Protocol, must be "tcp" or "udp"
|
## Protocol, must be "tcp" or "udp"
|
||||||
## NOTE: because the "udp" protocol does not respond to requests, it requires
|
## NOTE: because the "udp" protocol does not respond to requests, it requires
|
||||||
|
@ -13,11 +14,12 @@ It can also check response text.
|
||||||
protocol = "tcp"
|
protocol = "tcp"
|
||||||
## Server address (default localhost)
|
## Server address (default localhost)
|
||||||
address = "localhost:80"
|
address = "localhost:80"
|
||||||
|
|
||||||
## Set timeout
|
## Set timeout
|
||||||
timeout = "1s"
|
# timeout = "1s"
|
||||||
|
|
||||||
## Set read timeout (only used if expecting a response)
|
## Set read timeout (only used if expecting a response)
|
||||||
read_timeout = "1s"
|
# read_timeout = "1s"
|
||||||
|
|
||||||
## The following options are required for UDP checks. For TCP, they are
|
## The following options are required for UDP checks. For TCP, they are
|
||||||
## optional. The plugin will send the given string to the server and then
|
## optional. The plugin will send the given string to the server and then
|
||||||
|
@ -27,57 +29,29 @@ It can also check response text.
|
||||||
## expected string in answer
|
## expected string in answer
|
||||||
# expect = "ssh"
|
# expect = "ssh"
|
||||||
|
|
||||||
[[inputs.net_response]]
|
## Uncomment to remove deprecated fields; recommended for new deploys
|
||||||
protocol = "tcp"
|
# fieldexclude = ["result_type", "string_found"]
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
# TCP or UDP 'ping' given url and collect response time in seconds
|
|
||||||
[[inputs.net_response]]
|
|
||||||
## Protocol, must be "tcp" or "udp"
|
|
||||||
protocol = "tcp"
|
|
||||||
## Server address (default localhost)
|
|
||||||
address = "github.com:80"
|
|
||||||
## Set timeout
|
|
||||||
timeout = "1s"
|
|
||||||
|
|
||||||
## Optional string sent to the server
|
|
||||||
send = "ssh"
|
|
||||||
## Optional expected string in answer
|
|
||||||
expect = "ssh"
|
|
||||||
## Set read timeout (only used if expecting a response)
|
|
||||||
read_timeout = "1s"
|
|
||||||
|
|
||||||
[[inputs.net_response]]
|
|
||||||
protocol = "udp"
|
|
||||||
address = "localhost:161"
|
|
||||||
timeout = "2s"
|
|
||||||
send = "hello server"
|
|
||||||
expect = "hello client"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Measurements & Fields:
|
### Metrics:
|
||||||
|
|
||||||
- net_response
|
- net_response
|
||||||
- response_time (float, seconds)
|
- tags:
|
||||||
- result_type (string) # success, timeout, connection_failed, read_failed, string_mismatch
|
|
||||||
- [**DEPRECATED**] string_found (boolean)
|
|
||||||
|
|
||||||
### Tags:
|
|
||||||
|
|
||||||
- All measurements have the following tags:
|
|
||||||
- server
|
- server
|
||||||
- port
|
- port
|
||||||
- protocol
|
- protocol
|
||||||
|
- result
|
||||||
|
- fields:
|
||||||
|
- response_time (float, seconds)
|
||||||
|
- success (int) # success 0, failure 1
|
||||||
|
- result_code (int, success = 0, timeout = 1, connection_failed = 2, read_failed = 3, string_mismatch = 4)
|
||||||
|
- result_type (string) **DEPRECATED in 1.7; use result tag**
|
||||||
|
- string_found (boolean) **DEPRECATED in 1.4; use result tag**
|
||||||
|
|
||||||
### Example Output:
|
### Example Output:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ./telegraf --config telegraf.conf --input-filter net_response --test
|
net_response,port=8086,protocol=tcp,result=success,server=localhost response_time=0.000092948,result_code=0i,result_type="success" 1525820185000000000
|
||||||
net_response,server=influxdata.com,port=8080,protocol=tcp,host=localhost result_type="timeout" 1499310361000000000
|
net_response,port=8080,protocol=tcp,result=connection_failed,server=localhost result_code=2i,result_type="connection_failed" 1525820088000000000
|
||||||
net_response,server=influxdata.com,port=443,protocol=tcp,host=localhost result_type="success",response_time=0.088703864 1499310361000000000
|
net_response,port=8080,protocol=udp,result=read_failed,server=localhost result_code=3i,result_type="read_failed",string_found=false 1525820088000000000
|
||||||
net_response,protocol=tcp,host=localhost,server=this.domain.does.not.exist,port=443 result_type="connection_failed" 1499310361000000000
|
|
||||||
net_response,protocol=udp,host=localhost,server=influxdata.com,port=8080 result_type="read_failed" 1499310362000000000
|
|
||||||
net_response,port=31338,protocol=udp,host=localhost,server=localhost result_type="string_mismatch",string_found=false,response_time=0.00242682 1499310362000000000
|
|
||||||
net_response,protocol=udp,host=localhost,server=localhost,port=31338 response_time=0.001128598,result_type="success",string_found=true 1499310362000000000
|
|
||||||
net_response,server=this.domain.does.not.exist,port=443,protocol=udp,host=localhost result_type="connection_failed" 1499310362000000000
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -13,7 +13,17 @@ import (
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NetResponses struct
|
type ResultType uint64
|
||||||
|
|
||||||
|
const (
|
||||||
|
Success ResultType = 0
|
||||||
|
Timeout = 1
|
||||||
|
ConnectionFailed = 2
|
||||||
|
ReadFailed = 3
|
||||||
|
StringMismatch = 4
|
||||||
|
)
|
||||||
|
|
||||||
|
// NetResponse struct
|
||||||
type NetResponse struct {
|
type NetResponse struct {
|
||||||
Address string
|
Address string
|
||||||
Timeout internal.Duration
|
Timeout internal.Duration
|
||||||
|
@ -23,8 +33,11 @@ type NetResponse struct {
|
||||||
Protocol string
|
Protocol string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (_ *NetResponse) Description() string {
|
var description = "Collect response time of a TCP or UDP connection"
|
||||||
return "TCP or UDP 'ping' given url and collect response time in seconds"
|
|
||||||
|
// Description will return a short string to explain what the plugin does.
|
||||||
|
func (*NetResponse) Description() string {
|
||||||
|
return description
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
|
@ -34,11 +47,12 @@ var sampleConfig = `
|
||||||
protocol = "tcp"
|
protocol = "tcp"
|
||||||
## Server address (default localhost)
|
## Server address (default localhost)
|
||||||
address = "localhost:80"
|
address = "localhost:80"
|
||||||
|
|
||||||
## Set timeout
|
## Set timeout
|
||||||
timeout = "1s"
|
# timeout = "1s"
|
||||||
|
|
||||||
## Set read timeout (only used if expecting a response)
|
## Set read timeout (only used if expecting a response)
|
||||||
read_timeout = "1s"
|
# read_timeout = "1s"
|
||||||
|
|
||||||
## The following options are required for UDP checks. For TCP, they are
|
## The following options are required for UDP checks. For TCP, they are
|
||||||
## optional. The plugin will send the given string to the server and then
|
## optional. The plugin will send the given string to the server and then
|
||||||
|
@ -47,15 +61,22 @@ var sampleConfig = `
|
||||||
# send = "ssh"
|
# send = "ssh"
|
||||||
## expected string in answer
|
## expected string in answer
|
||||||
# expect = "ssh"
|
# expect = "ssh"
|
||||||
|
|
||||||
|
## Uncomment to remove deprecated fields
|
||||||
|
# fieldexclude = ["result_type", "string_found"]
|
||||||
`
|
`
|
||||||
|
|
||||||
func (_ *NetResponse) SampleConfig() string {
|
// SampleConfig will return a complete configuration example with details about each field.
|
||||||
|
func (*NetResponse) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NetResponse) TcpGather() (map[string]interface{}, error) {
|
// TCPGather will execute if there are TCP tests defined in the configuration.
|
||||||
// Prepare fields
|
// It will return a map[string]interface{} for fields and a map[string]string for tags
|
||||||
fields := make(map[string]interface{})
|
func (n *NetResponse) TCPGather() (tags map[string]string, fields map[string]interface{}) {
|
||||||
|
// Prepare returns
|
||||||
|
tags = make(map[string]string)
|
||||||
|
fields = make(map[string]interface{})
|
||||||
// Start Timer
|
// Start Timer
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
// Connecting
|
// Connecting
|
||||||
|
@ -65,11 +86,11 @@ func (n *NetResponse) TcpGather() (map[string]interface{}, error) {
|
||||||
// Handle error
|
// Handle error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if e, ok := err.(net.Error); ok && e.Timeout() {
|
if e, ok := err.(net.Error); ok && e.Timeout() {
|
||||||
fields["result_type"] = "timeout"
|
setResult(Timeout, fields, tags, n.Expect)
|
||||||
} else {
|
} else {
|
||||||
fields["result_type"] = "connection_failed"
|
setResult(ConnectionFailed, fields, tags, n.Expect)
|
||||||
}
|
}
|
||||||
return fields, nil
|
return tags, fields
|
||||||
}
|
}
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
// Send string if needed
|
// Send string if needed
|
||||||
|
@ -92,30 +113,30 @@ func (n *NetResponse) TcpGather() (map[string]interface{}, error) {
|
||||||
responseTime = time.Since(start).Seconds()
|
responseTime = time.Since(start).Seconds()
|
||||||
// Handle error
|
// Handle error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fields["string_found"] = false
|
setResult(ReadFailed, fields, tags, n.Expect)
|
||||||
fields["result_type"] = "read_failed"
|
|
||||||
} else {
|
} else {
|
||||||
// Looking for string in answer
|
// Looking for string in answer
|
||||||
RegEx := regexp.MustCompile(`.*` + n.Expect + `.*`)
|
RegEx := regexp.MustCompile(`.*` + n.Expect + `.*`)
|
||||||
find := RegEx.FindString(string(data))
|
find := RegEx.FindString(string(data))
|
||||||
if find != "" {
|
if find != "" {
|
||||||
fields["result_type"] = "success"
|
setResult(Success, fields, tags, n.Expect)
|
||||||
fields["string_found"] = true
|
|
||||||
} else {
|
} else {
|
||||||
fields["result_type"] = "string_mismatch"
|
setResult(StringMismatch, fields, tags, n.Expect)
|
||||||
fields["string_found"] = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fields["result_type"] = "success"
|
setResult(Success, fields, tags, n.Expect)
|
||||||
}
|
}
|
||||||
fields["response_time"] = responseTime
|
fields["response_time"] = responseTime
|
||||||
return fields, nil
|
return tags, fields
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NetResponse) UdpGather() (map[string]interface{}, error) {
|
// UDPGather will execute if there are UDP tests defined in the configuration.
|
||||||
// Prepare fields
|
// It will return a map[string]interface{} for fields and a map[string]string for tags
|
||||||
fields := make(map[string]interface{})
|
func (n *NetResponse) UDPGather() (tags map[string]string, fields map[string]interface{}) {
|
||||||
|
// Prepare returns
|
||||||
|
tags = make(map[string]string)
|
||||||
|
fields = make(map[string]interface{})
|
||||||
// Start Timer
|
// Start Timer
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
// Resolving
|
// Resolving
|
||||||
|
@ -125,8 +146,8 @@ func (n *NetResponse) UdpGather() (map[string]interface{}, error) {
|
||||||
conn, err := net.DialUDP("udp", LocalAddr, udpAddr)
|
conn, err := net.DialUDP("udp", LocalAddr, udpAddr)
|
||||||
// Handle error
|
// Handle error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fields["result_type"] = "connection_failed"
|
setResult(ConnectionFailed, fields, tags, n.Expect)
|
||||||
return fields, nil
|
return tags, fields
|
||||||
}
|
}
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
// Send string
|
// Send string
|
||||||
|
@ -142,24 +163,27 @@ func (n *NetResponse) UdpGather() (map[string]interface{}, error) {
|
||||||
responseTime := time.Since(start).Seconds()
|
responseTime := time.Since(start).Seconds()
|
||||||
// Handle error
|
// Handle error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fields["result_type"] = "read_failed"
|
setResult(ReadFailed, fields, tags, n.Expect)
|
||||||
return fields, nil
|
return tags, fields
|
||||||
} else {
|
}
|
||||||
|
|
||||||
// Looking for string in answer
|
// Looking for string in answer
|
||||||
RegEx := regexp.MustCompile(`.*` + n.Expect + `.*`)
|
RegEx := regexp.MustCompile(`.*` + n.Expect + `.*`)
|
||||||
find := RegEx.FindString(string(buf))
|
find := RegEx.FindString(string(buf))
|
||||||
if find != "" {
|
if find != "" {
|
||||||
fields["result_type"] = "success"
|
setResult(Success, fields, tags, n.Expect)
|
||||||
fields["string_found"] = true
|
|
||||||
} else {
|
} else {
|
||||||
fields["result_type"] = "string_mismatch"
|
setResult(StringMismatch, fields, tags, n.Expect)
|
||||||
fields["string_found"] = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fields["response_time"] = responseTime
|
|
||||||
return fields, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fields["response_time"] = responseTime
|
||||||
|
|
||||||
|
return tags, fields
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gather is called by telegraf when the plugin is executed on its interval.
|
||||||
|
// It will call either UDPGather or TCPGather based on the configuration and
|
||||||
|
// also fill an Accumulator that is supplied.
|
||||||
func (n *NetResponse) Gather(acc telegraf.Accumulator) error {
|
func (n *NetResponse) Gather(acc telegraf.Accumulator) error {
|
||||||
// Set default values
|
// Set default values
|
||||||
if n.Timeout.Duration == 0 {
|
if n.Timeout.Duration == 0 {
|
||||||
|
@ -189,24 +213,56 @@ func (n *NetResponse) Gather(acc telegraf.Accumulator) error {
|
||||||
// Prepare data
|
// Prepare data
|
||||||
tags := map[string]string{"server": host, "port": port}
|
tags := map[string]string{"server": host, "port": port}
|
||||||
var fields map[string]interface{}
|
var fields map[string]interface{}
|
||||||
|
var returnTags map[string]string
|
||||||
// Gather data
|
// Gather data
|
||||||
if n.Protocol == "tcp" {
|
if n.Protocol == "tcp" {
|
||||||
fields, err = n.TcpGather()
|
returnTags, fields = n.TCPGather()
|
||||||
tags["protocol"] = "tcp"
|
tags["protocol"] = "tcp"
|
||||||
} else if n.Protocol == "udp" {
|
} else if n.Protocol == "udp" {
|
||||||
fields, err = n.UdpGather()
|
returnTags, fields = n.UDPGather()
|
||||||
tags["protocol"] = "udp"
|
tags["protocol"] = "udp"
|
||||||
} else {
|
} else {
|
||||||
return errors.New("Bad protocol")
|
return errors.New("Bad protocol")
|
||||||
}
|
}
|
||||||
if err != nil {
|
for key, value := range returnTags {
|
||||||
return err
|
tags[key] = value
|
||||||
|
}
|
||||||
|
// Merge the tags
|
||||||
|
for k, v := range returnTags {
|
||||||
|
tags[k] = v
|
||||||
}
|
}
|
||||||
// Add metrics
|
// Add metrics
|
||||||
acc.AddFields("net_response", fields, tags)
|
acc.AddFields("net_response", fields, tags)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setResult(result ResultType, fields map[string]interface{}, tags map[string]string, expect string) {
|
||||||
|
var tag string
|
||||||
|
switch result {
|
||||||
|
case Success:
|
||||||
|
tag = "success"
|
||||||
|
case Timeout:
|
||||||
|
tag = "timeout"
|
||||||
|
case ConnectionFailed:
|
||||||
|
tag = "connection_failed"
|
||||||
|
case ReadFailed:
|
||||||
|
tag = "read_failed"
|
||||||
|
case StringMismatch:
|
||||||
|
tag = "string_mismatch"
|
||||||
|
}
|
||||||
|
|
||||||
|
tags["result"] = tag
|
||||||
|
fields["result_code"] = uint64(result)
|
||||||
|
|
||||||
|
// deprecated in 1.7; use result tag
|
||||||
|
fields["result_type"] = tag
|
||||||
|
|
||||||
|
// deprecated in 1.4; use result tag
|
||||||
|
if expect != "" {
|
||||||
|
fields["string_found"] = result == Success
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add("net_response", func() telegraf.Input {
|
inputs.Add("net_response", func() telegraf.Input {
|
||||||
return &NetResponse{}
|
return &NetResponse{}
|
||||||
|
|
|
@ -13,6 +13,21 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestSample(t *testing.T) {
|
||||||
|
c := &NetResponse{}
|
||||||
|
output := c.SampleConfig()
|
||||||
|
if output != sampleConfig {
|
||||||
|
t.Error("Sample config doesn't match")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDescription(t *testing.T) {
|
||||||
|
c := &NetResponse{}
|
||||||
|
output := c.Description()
|
||||||
|
if output != description {
|
||||||
|
t.Error("Description output is not correct")
|
||||||
|
}
|
||||||
|
}
|
||||||
func TestBadProtocol(t *testing.T) {
|
func TestBadProtocol(t *testing.T) {
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
// Init plugin
|
// Init plugin
|
||||||
|
@ -26,6 +41,50 @@ func TestBadProtocol(t *testing.T) {
|
||||||
assert.Equal(t, "Bad protocol", err1.Error())
|
assert.Equal(t, "Bad protocol", err1.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNoPort(t *testing.T) {
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
c := NetResponse{
|
||||||
|
Protocol: "tcp",
|
||||||
|
Address: ":",
|
||||||
|
}
|
||||||
|
err1 := c.Gather(&acc)
|
||||||
|
require.Error(t, err1)
|
||||||
|
assert.Equal(t, "Bad port", err1.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAddressOnly(t *testing.T) {
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
c := NetResponse{
|
||||||
|
Protocol: "tcp",
|
||||||
|
Address: "127.0.0.1",
|
||||||
|
}
|
||||||
|
err1 := c.Gather(&acc)
|
||||||
|
require.Error(t, err1)
|
||||||
|
assert.Equal(t, "address 127.0.0.1: missing port in address", err1.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSendExpectStrings(t *testing.T) {
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
tc := NetResponse{
|
||||||
|
Protocol: "udp",
|
||||||
|
Address: "127.0.0.1:7",
|
||||||
|
Send: "",
|
||||||
|
Expect: "toast",
|
||||||
|
}
|
||||||
|
uc := NetResponse{
|
||||||
|
Protocol: "udp",
|
||||||
|
Address: "127.0.0.1:7",
|
||||||
|
Send: "toast",
|
||||||
|
Expect: "",
|
||||||
|
}
|
||||||
|
err1 := tc.Gather(&acc)
|
||||||
|
require.Error(t, err1)
|
||||||
|
assert.Equal(t, "Send string cannot be empty", err1.Error())
|
||||||
|
err2 := uc.Gather(&acc)
|
||||||
|
require.Error(t, err2)
|
||||||
|
assert.Equal(t, "Expected string cannot be empty", err2.Error())
|
||||||
|
}
|
||||||
|
|
||||||
func TestTCPError(t *testing.T) {
|
func TestTCPError(t *testing.T) {
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
// Init plugin
|
// Init plugin
|
||||||
|
@ -39,12 +98,14 @@ func TestTCPError(t *testing.T) {
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"net_response",
|
"net_response",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
"result_code": uint64(2),
|
||||||
"result_type": "connection_failed",
|
"result_type": "connection_failed",
|
||||||
},
|
},
|
||||||
map[string]string{
|
map[string]string{
|
||||||
"server": "",
|
"server": "",
|
||||||
"port": "9999",
|
"port": "9999",
|
||||||
"protocol": "tcp",
|
"protocol": "tcp",
|
||||||
|
"result": "connection_failed",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -77,11 +138,14 @@ func TestTCPOK1(t *testing.T) {
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"net_response",
|
"net_response",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
"result_code": uint64(0),
|
||||||
"result_type": "success",
|
"result_type": "success",
|
||||||
"string_found": true,
|
"string_found": true,
|
||||||
"response_time": 1.0,
|
"response_time": 1.0,
|
||||||
},
|
},
|
||||||
map[string]string{"server": "127.0.0.1",
|
map[string]string{
|
||||||
|
"result": "success",
|
||||||
|
"server": "127.0.0.1",
|
||||||
"port": "2004",
|
"port": "2004",
|
||||||
"protocol": "tcp",
|
"protocol": "tcp",
|
||||||
},
|
},
|
||||||
|
@ -118,11 +182,14 @@ func TestTCPOK2(t *testing.T) {
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"net_response",
|
"net_response",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
"result_code": uint64(4),
|
||||||
"result_type": "string_mismatch",
|
"result_type": "string_mismatch",
|
||||||
"string_found": false,
|
"string_found": false,
|
||||||
"response_time": 1.0,
|
"response_time": 1.0,
|
||||||
},
|
},
|
||||||
map[string]string{"server": "127.0.0.1",
|
map[string]string{
|
||||||
|
"result": "string_mismatch",
|
||||||
|
"server": "127.0.0.1",
|
||||||
"port": "2004",
|
"port": "2004",
|
||||||
"protocol": "tcp",
|
"protocol": "tcp",
|
||||||
},
|
},
|
||||||
|
@ -131,7 +198,7 @@ func TestTCPOK2(t *testing.T) {
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUDPrror(t *testing.T) {
|
func TestUDPError(t *testing.T) {
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
// Init plugin
|
// Init plugin
|
||||||
c := NetResponse{
|
c := NetResponse{
|
||||||
|
@ -151,10 +218,13 @@ func TestUDPrror(t *testing.T) {
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"net_response",
|
"net_response",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
"result_code": uint64(3),
|
||||||
"result_type": "read_failed",
|
"result_type": "read_failed",
|
||||||
"response_time": 1.0,
|
"response_time": 1.0,
|
||||||
|
"string_found": false,
|
||||||
},
|
},
|
||||||
map[string]string{
|
map[string]string{
|
||||||
|
"result": "read_failed",
|
||||||
"server": "",
|
"server": "",
|
||||||
"port": "9999",
|
"port": "9999",
|
||||||
"protocol": "udp",
|
"protocol": "udp",
|
||||||
|
@ -190,11 +260,14 @@ func TestUDPOK1(t *testing.T) {
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"net_response",
|
"net_response",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
"result_code": uint64(0),
|
||||||
"result_type": "success",
|
"result_type": "success",
|
||||||
"string_found": true,
|
"string_found": true,
|
||||||
"response_time": 1.0,
|
"response_time": 1.0,
|
||||||
},
|
},
|
||||||
map[string]string{"server": "127.0.0.1",
|
map[string]string{
|
||||||
|
"result": "success",
|
||||||
|
"server": "127.0.0.1",
|
||||||
"port": "2004",
|
"port": "2004",
|
||||||
"protocol": "udp",
|
"protocol": "udp",
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue