From 761544f56d90764b0bf5ab836a8c3ec79e5445b0 Mon Sep 17 00:00:00 2001
From: Daniel Nelson <daniel.nelson@influxdb.com>
Date: Mon, 9 Oct 2017 15:02:57 -0700
Subject: [PATCH] Add HasPoint method to testutil.Accumulator

---
 plugins/inputs/filestat/filestat_test.go | 92 ++++++++++++------------
 testutil/accumulator.go                  | 25 +++++++
 2 files changed, 69 insertions(+), 48 deletions(-)

diff --git a/plugins/inputs/filestat/filestat_test.go b/plugins/inputs/filestat/filestat_test.go
index 83d3c87c..56d47ff7 100644
--- a/plugins/inputs/filestat/filestat_test.go
+++ b/plugins/inputs/filestat/filestat_test.go
@@ -5,6 +5,8 @@ import (
 	"strings"
 	"testing"
 
+	"github.com/stretchr/testify/require"
+
 	"github.com/influxdata/telegraf/testutil"
 	"github.com/stretchr/testify/assert"
 )
@@ -24,28 +26,24 @@ func TestGatherNoMd5(t *testing.T) {
 	tags1 := map[string]string{
 		"file": dir + "log1.log",
 	}
-	fields1 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields1, tags1)
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"exists", int64(1)))
 
 	tags2 := map[string]string{
 		"file": dir + "log2.log",
 	}
-	fields2 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields2, tags2)
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"exists", int64(1)))
 
 	tags3 := map[string]string{
 		"file": "/non/existant/file",
 	}
-	fields3 := map[string]interface{}{
-		"exists": int64(0),
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields3, tags3)
+	require.True(t, acc.HasPoint("filestat", tags3,
+		"exists", int64(0)))
 }
 
 func TestGatherExplicitFiles(t *testing.T) {
@@ -64,30 +62,28 @@ func TestGatherExplicitFiles(t *testing.T) {
 	tags1 := map[string]string{
 		"file": dir + "log1.log",
 	}
-	fields1 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-		"md5_sum":    "d41d8cd98f00b204e9800998ecf8427e",
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields1, tags1)
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"exists", int64(1)))
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"md5_sum", "d41d8cd98f00b204e9800998ecf8427e"))
 
 	tags2 := map[string]string{
 		"file": dir + "log2.log",
 	}
-	fields2 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-		"md5_sum":    "d41d8cd98f00b204e9800998ecf8427e",
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields2, tags2)
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"exists", int64(1)))
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"md5_sum", "d41d8cd98f00b204e9800998ecf8427e"))
 
 	tags3 := map[string]string{
 		"file": "/non/existant/file",
 	}
-	fields3 := map[string]interface{}{
-		"exists": int64(0),
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields3, tags3)
+	require.True(t, acc.HasPoint("filestat", tags3,
+		"exists", int64(0)))
 }
 
 func TestGatherGlob(t *testing.T) {
@@ -136,32 +132,32 @@ func TestGatherSuperAsterisk(t *testing.T) {
 	tags1 := map[string]string{
 		"file": dir + "log1.log",
 	}
-	fields1 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-		"md5_sum":    "d41d8cd98f00b204e9800998ecf8427e",
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields1, tags1)
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"exists", int64(1)))
+	require.True(t, acc.HasPoint("filestat", tags1,
+		"md5_sum", "d41d8cd98f00b204e9800998ecf8427e"))
 
 	tags2 := map[string]string{
 		"file": dir + "log2.log",
 	}
-	fields2 := map[string]interface{}{
-		"size_bytes": int64(0),
-		"exists":     int64(1),
-		"md5_sum":    "d41d8cd98f00b204e9800998ecf8427e",
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields2, tags2)
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"size_bytes", int64(0)))
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"exists", int64(1)))
+	require.True(t, acc.HasPoint("filestat", tags2,
+		"md5_sum", "d41d8cd98f00b204e9800998ecf8427e"))
 
 	tags3 := map[string]string{
 		"file": dir + "test.conf",
 	}
-	fields3 := map[string]interface{}{
-		"size_bytes": int64(104),
-		"exists":     int64(1),
-		"md5_sum":    "5a7e9b77fa25e7bb411dbd17cf403c1f",
-	}
-	acc.AssertContainsTaggedFields(t, "filestat", fields3, tags3)
+	require.True(t, acc.HasPoint("filestat", tags3,
+		"size_bytes", int64(104)))
+	require.True(t, acc.HasPoint("filestat", tags3,
+		"exists", int64(1)))
+	require.True(t, acc.HasPoint("filestat", tags3,
+		"md5_sum", "5a7e9b77fa25e7bb411dbd17cf403c1f"))
 }
 
 func TestGetMd5(t *testing.T) {
diff --git a/testutil/accumulator.go b/testutil/accumulator.go
index 9a8eef9e..c478400e 100644
--- a/testutil/accumulator.go
+++ b/testutil/accumulator.go
@@ -297,6 +297,31 @@ func (a *Accumulator) AssertContainsFields(
 	assert.Fail(t, msg)
 }
 
+func (a *Accumulator) HasPoint(
+	measurement string,
+	tags map[string]string,
+	fieldKey string,
+	fieldValue interface{},
+) bool {
+	a.Lock()
+	defer a.Unlock()
+	for _, p := range a.Metrics {
+		if p.Measurement != measurement {
+			continue
+		}
+
+		if !reflect.DeepEqual(tags, p.Tags) {
+			continue
+		}
+
+		v, ok := p.Fields[fieldKey]
+		if ok && reflect.DeepEqual(v, fieldValue) {
+			return true
+		}
+	}
+	return false
+}
+
 func (a *Accumulator) AssertDoesNotContainMeasurement(t *testing.T, measurement string) {
 	a.Lock()
 	defer a.Unlock()
-- 
GitLab