From 6a4bf9fcffbae1c849eaf3fee25c597a481af5b0 Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Wed, 6 Jan 2016 17:19:39 -0700 Subject: [PATCH] 0.3.0 unit tests: mailchimp, memcached, mongodb --- plugins/mailchimp/mailchimp_test.go | 182 +++++++++------------------ plugins/memcached/memcached.go | 2 +- plugins/memcached/memcached_test.go | 2 +- plugins/mongodb/mongodb_data_test.go | 50 +++++--- 4 files changed, 100 insertions(+), 136 deletions(-) diff --git a/plugins/mailchimp/mailchimp_test.go b/plugins/mailchimp/mailchimp_test.go index bd800f656..5e5394581 100644 --- a/plugins/mailchimp/mailchimp_test.go +++ b/plugins/mailchimp/mailchimp_test.go @@ -9,7 +9,6 @@ import ( "github.com/influxdb/telegraf/testutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -42,67 +41,38 @@ func TestMailChimpGatherReports(t *testing.T) { tags["id"] = "42694e9e57" tags["campaign_title"] = "Freddie's Jokes Vol. 1" - testInts := []struct { - measurement string - value int - }{ - {"emails_sent", 200}, - {"abuse_reports", 0}, - {"unsubscribed", 2}, - {"hard_bounces", 0}, - {"soft_bounces", 2}, - {"syntax_errors", 0}, - {"forwards_count", 0}, - {"forwards_opens", 0}, - {"opens_total", 186}, - {"unique_opens", 100}, - {"clicks_total", 42}, - {"unique_clicks", 400}, - {"unique_subscriber_clicks", 42}, - {"facebook_recipient_likes", 5}, - {"facebook_unique_likes", 8}, - {"facebook_likes", 42}, - } - for _, test := range testInts { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) - } - - testFloats := []struct { - measurement string - value float64 - }{ - {"open_rate", 42}, - {"click_rate", 42}, - {"industry_open_rate", 0.17076777144396}, - {"industry_click_rate", 0.027431311866951}, - {"industry_bounce_rate", 0.0063767751251474}, - {"industry_unopen_rate", 0.82285545343089}, - {"industry_unsub_rate", 0.001436957032815}, - {"industry_abuse_rate", 0.00021111996110887}, - {"list_stats_sub_rate", 10}, - {"list_stats_unsub_rate", 20}, - {"list_stats_open_rate", 42}, - {"list_stats_click_rate", 42}, - } - for _, test := range testFloats { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) - } - - testStrings := []struct { - measurement string - value string - }{ - {"industry_type", "Social Networks and Online Communities"}, - } - for _, test := range testStrings { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) + fields := map[string]interface{}{ + "emails_sent": int(200), + "abuse_reports": int(0), + "unsubscribed": int(2), + "hard_bounces": int(0), + "soft_bounces": int(2), + "syntax_errors": int(0), + "forwards_count": int(0), + "forwards_opens": int(0), + "opens_total": int(186), + "unique_opens": int(100), + "clicks_total": int(42), + "unique_clicks": int(400), + "unique_subscriber_clicks": int(42), + "facebook_recipient_likes": int(5), + "facebook_unique_likes": int(8), + "facebook_likes": int(42), + "open_rate": float64(42), + "click_rate": float64(42), + "industry_open_rate": float64(0.17076777144396), + "industry_click_rate": float64(0.027431311866951), + "industry_bounce_rate": float64(0.0063767751251474), + "industry_unopen_rate": float64(0.82285545343089), + "industry_unsub_rate": float64(0.001436957032815), + "industry_abuse_rate": float64(0.00021111996110887), + "list_stats_sub_rate": float64(10), + "list_stats_unsub_rate": float64(20), + "list_stats_open_rate": float64(42), + "list_stats_click_rate": float64(42), + "industry_type": "Social Networks and Online Communities", } + acc.AssertContainsTaggedFields(t, "mailchimp", fields, tags) } func TestMailChimpGatherReport(t *testing.T) { @@ -135,67 +105,39 @@ func TestMailChimpGatherReport(t *testing.T) { tags["id"] = "42694e9e57" tags["campaign_title"] = "Freddie's Jokes Vol. 1" - testInts := []struct { - measurement string - value int - }{ - {"emails_sent", 200}, - {"abuse_reports", 0}, - {"unsubscribed", 2}, - {"hard_bounces", 0}, - {"soft_bounces", 2}, - {"syntax_errors", 0}, - {"forwards_count", 0}, - {"forwards_opens", 0}, - {"opens_total", 186}, - {"unique_opens", 100}, - {"clicks_total", 42}, - {"unique_clicks", 400}, - {"unique_subscriber_clicks", 42}, - {"facebook_recipient_likes", 5}, - {"facebook_unique_likes", 8}, - {"facebook_likes", 42}, - } - for _, test := range testInts { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) + fields := map[string]interface{}{ + "emails_sent": int(200), + "abuse_reports": int(0), + "unsubscribed": int(2), + "hard_bounces": int(0), + "soft_bounces": int(2), + "syntax_errors": int(0), + "forwards_count": int(0), + "forwards_opens": int(0), + "opens_total": int(186), + "unique_opens": int(100), + "clicks_total": int(42), + "unique_clicks": int(400), + "unique_subscriber_clicks": int(42), + "facebook_recipient_likes": int(5), + "facebook_unique_likes": int(8), + "facebook_likes": int(42), + "open_rate": float64(42), + "click_rate": float64(42), + "industry_open_rate": float64(0.17076777144396), + "industry_click_rate": float64(0.027431311866951), + "industry_bounce_rate": float64(0.0063767751251474), + "industry_unopen_rate": float64(0.82285545343089), + "industry_unsub_rate": float64(0.001436957032815), + "industry_abuse_rate": float64(0.00021111996110887), + "list_stats_sub_rate": float64(10), + "list_stats_unsub_rate": float64(20), + "list_stats_open_rate": float64(42), + "list_stats_click_rate": float64(42), + "industry_type": "Social Networks and Online Communities", } + acc.AssertContainsTaggedFields(t, "mailchimp", fields, tags) - testFloats := []struct { - measurement string - value float64 - }{ - {"open_rate", 42}, - {"click_rate", 42}, - {"industry_open_rate", 0.17076777144396}, - {"industry_click_rate", 0.027431311866951}, - {"industry_bounce_rate", 0.0063767751251474}, - {"industry_unopen_rate", 0.82285545343089}, - {"industry_unsub_rate", 0.001436957032815}, - {"industry_abuse_rate", 0.00021111996110887}, - {"list_stats_sub_rate", 10}, - {"list_stats_unsub_rate", 20}, - {"list_stats_open_rate", 42}, - {"list_stats_click_rate", 42}, - } - for _, test := range testFloats { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) - } - - testStrings := []struct { - measurement string - value string - }{ - {"industry_type", "Social Networks and Online Communities"}, - } - for _, test := range testStrings { - assert.True(t, acc.CheckTaggedValue(test.measurement, test.value, tags), - fmt.Sprintf("Measurement: %v, value: %v, tags: %v not found", - test.measurement, test.value, tags)) - } } func TestMailChimpGatherError(t *testing.T) { diff --git a/plugins/memcached/memcached.go b/plugins/memcached/memcached.go index 5aba8c9fb..196478264 100644 --- a/plugins/memcached/memcached.go +++ b/plugins/memcached/memcached.go @@ -141,7 +141,7 @@ func (m *Memcached) gatherServer( for _, key := range sendMetrics { if value, ok := values[key]; ok { // Mostly it is the number - if iValue, errParse := strconv.ParseInt(value, 10, 64); errParse != nil { + if iValue, errParse := strconv.ParseInt(value, 10, 64); errParse == nil { fields[key] = iValue } else { fields[key] = value diff --git a/plugins/memcached/memcached_test.go b/plugins/memcached/memcached_test.go index 05ff669b3..6e2f8452a 100644 --- a/plugins/memcached/memcached_test.go +++ b/plugins/memcached/memcached_test.go @@ -32,7 +32,7 @@ func TestMemcachedGeneratesMetrics(t *testing.T) { "bytes_read", "bytes_written", "threads", "conn_yields"} for _, metric := range intMetrics { - assert.True(t, acc.HasIntValue(metric), metric) + assert.True(t, acc.HasIntField("memcached", metric), metric) } } diff --git a/plugins/mongodb/mongodb_data_test.go b/plugins/mongodb/mongodb_data_test.go index 9ee3f9f48..5d24a7a09 100644 --- a/plugins/mongodb/mongodb_data_test.go +++ b/plugins/mongodb/mongodb_data_test.go @@ -6,7 +6,6 @@ import ( "github.com/influxdb/telegraf/testutil" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) var tags = make(map[string]string) @@ -37,10 +36,11 @@ func TestAddNonReplStats(t *testing.T) { ) var acc testutil.Accumulator - d.AddDefaultStats(&acc) + d.AddDefaultStats() + d.flush(&acc) for key, _ := range DefaultStats { - assert.True(t, acc.HasIntValue(key)) + assert.True(t, acc.HasIntField("mongodb", key)) } } @@ -57,10 +57,11 @@ func TestAddReplStats(t *testing.T) { var acc testutil.Accumulator - d.AddDefaultStats(&acc) + d.AddDefaultStats() + d.flush(&acc) for key, _ := range MmapStats { - assert.True(t, acc.HasIntValue(key)) + assert.True(t, acc.HasIntField("mongodb", key)) } } @@ -76,10 +77,11 @@ func TestAddWiredTigerStats(t *testing.T) { var acc testutil.Accumulator - d.AddDefaultStats(&acc) + d.AddDefaultStats() + d.flush(&acc) for key, _ := range WiredTigerStats { - assert.True(t, acc.HasFloatValue(key)) + assert.True(t, acc.HasFloatField("mongodb", key)) } } @@ -95,17 +97,37 @@ func TestStateTag(t *testing.T) { tags, ) - stats := []string{"inserts_per_sec", "queries_per_sec"} - stateTags := make(map[string]string) stateTags["state"] = "PRI" var acc testutil.Accumulator - d.AddDefaultStats(&acc) - - for _, key := range stats { - err := acc.ValidateTaggedValue(key, int64(0), stateTags) - require.NoError(t, err) + d.AddDefaultStats() + d.flush(&acc) + fields := map[string]interface{}{ + "active_reads": int64(0), + "active_writes": int64(0), + "commands_per_sec": int64(0), + "deletes_per_sec": int64(0), + "flushes_per_sec": int64(0), + "getmores_per_sec": int64(0), + "inserts_per_sec": int64(0), + "member_status": "PRI", + "net_in_bytes": int64(0), + "net_out_bytes": int64(0), + "open_connections": int64(0), + "queries_per_sec": int64(0), + "queued_reads": int64(0), + "queued_writes": int64(0), + "repl_commands_per_sec": int64(0), + "repl_deletes_per_sec": int64(0), + "repl_getmores_per_sec": int64(0), + "repl_inserts_per_sec": int64(0), + "repl_queries_per_sec": int64(0), + "repl_updates_per_sec": int64(0), + "resident_megabytes": int64(0), + "updates_per_sec": int64(0), + "vsize_megabytes": int64(0), } + acc.AssertContainsTaggedFields(t, "mongodb", fields, stateTags) }