use AddError everywhere (#2372)

This commit is contained in:
Patrick Hemmer
2017-04-24 14:13:26 -04:00
committed by Daniel Nelson
parent 06199523ac
commit 5ebe43f86f
95 changed files with 341 additions and 531 deletions

View File

@@ -5,7 +5,6 @@ import (
"errors"
"fmt"
"net/http"
"strings"
"sync"
"time"
@@ -57,34 +56,20 @@ func (i *InfluxDB) Gather(acc telegraf.Accumulator) error {
}
}
errorChannel := make(chan error, len(i.URLs))
var wg sync.WaitGroup
for _, u := range i.URLs {
wg.Add(1)
go func(url string) {
defer wg.Done()
if err := i.gatherURL(acc, url); err != nil {
errorChannel <- fmt.Errorf("[url=%s]: %s", url, err)
acc.AddError(fmt.Errorf("[url=%s]: %s", url, err))
}
}(u)
}
wg.Wait()
close(errorChannel)
// If there weren't any errors, we can return nil now.
if len(errorChannel) == 0 {
return nil
}
// There were errors, so join them all together as one big error.
errorStrings := make([]string, 0, len(errorChannel))
for err := range errorChannel {
errorStrings = append(errorStrings, err.Error())
}
return errors.New(strings.Join(errorStrings, "\n"))
return nil
}
type point struct {

View File

@@ -25,7 +25,7 @@ func TestBasic(t *testing.T) {
}
var acc testutil.Accumulator
require.NoError(t, plugin.Gather(&acc))
require.NoError(t, acc.GatherError(plugin.Gather))
require.Len(t, acc.Metrics, 3)
fields := map[string]interface{}{
@@ -72,7 +72,7 @@ func TestInfluxDB(t *testing.T) {
}
var acc testutil.Accumulator
require.NoError(t, plugin.Gather(&acc))
require.NoError(t, acc.GatherError(plugin.Gather))
require.Len(t, acc.Metrics, 34)
@@ -132,7 +132,7 @@ func TestInfluxDB2(t *testing.T) {
}
var acc testutil.Accumulator
require.NoError(t, plugin.Gather(&acc))
require.NoError(t, acc.GatherError(plugin.Gather))
require.Len(t, acc.Metrics, 34)
@@ -157,7 +157,7 @@ func TestErrorHandling(t *testing.T) {
}
var acc testutil.Accumulator
require.Error(t, plugin.Gather(&acc))
require.Error(t, acc.GatherError(plugin.Gather))
}
func TestErrorHandling404(t *testing.T) {
@@ -175,7 +175,7 @@ func TestErrorHandling404(t *testing.T) {
}
var acc testutil.Accumulator
require.Error(t, plugin.Gather(&acc))
require.Error(t, acc.GatherError(plugin.Gather))
}
const basicJSON = `