77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package multifile
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 	"path"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/influxdata/telegraf/testutil"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestFileTypes(t *testing.T) {
 | |
| 	wd, _ := os.Getwd()
 | |
| 
 | |
| 	m := MultiFile{
 | |
| 		BaseDir:   path.Join(wd, `testdata`),
 | |
| 		FailEarly: true,
 | |
| 		Files: []File{
 | |
| 			{Name: `bool.txt`, Dest: `examplebool`, Conversion: `bool`},
 | |
| 			{Name: `float.txt`, Dest: `examplefloat`, Conversion: `float`},
 | |
| 			{Name: `int.txt`, Dest: `examplefloatX`, Conversion: `float(3)`},
 | |
| 			{Name: `int.txt`, Dest: `exampleint`, Conversion: `int`},
 | |
| 			{Name: `string.txt`, Dest: `examplestring`},
 | |
| 			{Name: `tag.txt`, Dest: `exampletag`, Conversion: `tag`},
 | |
| 			{Name: `int.txt`, Conversion: `int`},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	var acc testutil.Accumulator
 | |
| 
 | |
| 	err := m.Gather(&acc)
 | |
| 
 | |
| 	require.NoError(t, err)
 | |
| 	assert.Equal(t, map[string]string{"exampletag": "test"}, acc.Metrics[0].Tags)
 | |
| 	assert.Equal(t, map[string]interface{}{
 | |
| 		"examplebool":   true,
 | |
| 		"examplestring": "hello world",
 | |
| 		"exampleint":    int64(123456),
 | |
| 		"int.txt":       int64(123456),
 | |
| 		"examplefloat":  123.456,
 | |
| 		"examplefloatX": 123.456,
 | |
| 	}, acc.Metrics[0].Fields)
 | |
| }
 | |
| 
 | |
| func FailEarly(failEarly bool, t *testing.T) error {
 | |
| 	wd, _ := os.Getwd()
 | |
| 
 | |
| 	m := MultiFile{
 | |
| 		BaseDir:   path.Join(wd, `testdata`),
 | |
| 		FailEarly: failEarly,
 | |
| 		Files: []File{
 | |
| 			{Name: `int.txt`, Dest: `exampleint`, Conversion: `int`},
 | |
| 			{Name: `int.txt`, Dest: `exampleerror`, Conversion: `bool`},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	var acc testutil.Accumulator
 | |
| 
 | |
| 	err := m.Gather(&acc)
 | |
| 
 | |
| 	if err == nil {
 | |
| 		assert.Equal(t, map[string]interface{}{
 | |
| 			"exampleint": int64(123456),
 | |
| 		}, acc.Metrics[0].Fields)
 | |
| 	}
 | |
| 
 | |
| 	return err
 | |
| }
 | |
| 
 | |
| func TestFailEarly(t *testing.T) {
 | |
| 	err := FailEarly(false, t)
 | |
| 	require.NoError(t, err)
 | |
| 	err = FailEarly(true, t)
 | |
| 	require.Error(t, err)
 | |
| }
 |