From 54ffb4f9b18a9f021bb8e65623963bb5899ed7b6 Mon Sep 17 00:00:00 2001 From: Jan Willem Janssen Date: Thu, 24 Aug 2017 09:25:10 +0200 Subject: [PATCH] Fixed #3162 fix parsing of SHM remotes - added test cases for SHM remotes; - slightly changed the fix for #2386 to improve and fix the parsing of SHM remotes. --- plugins/inputs/ntpq/ntpq.go | 2 +- plugins/inputs/ntpq/ntpq_test.go | 69 ++++++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/plugins/inputs/ntpq/ntpq.go b/plugins/inputs/ntpq/ntpq.go index 692e1bc5d0b5b..ce7bb96d789f0 100644 --- a/plugins/inputs/ntpq/ntpq.go +++ b/plugins/inputs/ntpq/ntpq.go @@ -69,7 +69,7 @@ func (n *NTPQ) Gather(acc telegraf.Accumulator) error { // Due to problems with a parsing, we have to use regexp expression in order // to remove string that starts from '(' and ends with space // see: https://github.com/influxdata/telegraf/issues/2386 - reg, err := regexp.Compile("\\([\\S]*") + reg, err := regexp.Compile("\\s+\\([\\S]*") if err != nil { return err } diff --git a/plugins/inputs/ntpq/ntpq_test.go b/plugins/inputs/ntpq/ntpq_test.go index d8da845d10e19..f643b33ce4826 100644 --- a/plugins/inputs/ntpq/ntpq_test.go +++ b/plugins/inputs/ntpq/ntpq_test.go @@ -229,22 +229,6 @@ func TestBadWhenNTPQ(t *testing.T) { acc := testutil.Accumulator{} assert.Error(t, acc.GatherError(n.Gather)) - - fields := map[string]interface{}{ - "poll": int64(256), - "reach": int64(37), - "delay": float64(51.016), - "offset": float64(233.010), - "jitter": float64(17.462), - } - tags := map[string]string{ - "remote": "uschi5-ntp-002.", - "state_prefix": "*", - "refid": "10.177.80.46", - "stratum": "2", - "type": "u", - } - acc.AssertContainsTaggedFields(t, "ntpq", fields, tags) } // TestParserNTPQ - realated to: @@ -260,6 +244,57 @@ func TestParserNTPQ(t *testing.T) { } acc := testutil.Accumulator{} assert.NoError(t, acc.GatherError(n.Gather)) + + fields := map[string]interface{}{ + "poll": int64(64), + "when": int64(60), + "reach": int64(377), + "delay": float64(0.0), + "offset": float64(0.045), + "jitter": float64(1.012), + } + tags := map[string]string{ + "remote": "SHM(0)", + "state_prefix": "*", + "refid": ".PPS.", + "stratum": "1", + "type": "u", + } + acc.AssertContainsTaggedFields(t, "ntpq", fields, tags) + + fields = map[string]interface{}{ + "poll": int64(128), + "when": int64(121), + "reach": int64(377), + "delay": float64(0.0), + "offset": float64(10.105), + "jitter": float64(2.012), + } + tags = map[string]string{ + "remote": "SHM(1)", + "state_prefix": "-", + "refid": ".GPS.", + "stratum": "1", + "type": "u", + } + acc.AssertContainsTaggedFields(t, "ntpq", fields, tags) + + fields = map[string]interface{}{ + "poll": int64(1024), + "when": int64(10), + "reach": int64(377), + "delay": float64(1.748), + "offset": float64(0.373), + "jitter": float64(0.101), + } + tags = map[string]string{ + "remote": "37.58.57.238", + "state_prefix": "+", + "refid": "192.53.103.103", + "stratum": "2", + "type": "u", + } + acc.AssertContainsTaggedFields(t, "ntpq", fields, tags) } func TestMultiNTPQ(t *testing.T) { @@ -480,7 +515,9 @@ var multiNTPQ = ` remote refid st t when poll reach delay ` var multiParserNTPQ = ` remote refid st t when poll reach delay offset jitter ============================================================================== +*SHM(0) .PPS. 1 u 60 64 377 0.000 0.045 1.012 +37.58.57.238 (d 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +37.58.57.238 (domain) 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +37.58.57.238 ( 192.53.103.103 2 u 10 1024 377 1.748 0.373 0.101 +-SHM(1) .GPS. 1 u 121 128 377 0.000 10.105 2.012 `