95 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| // +build linux
 | |
| 
 | |
| package conntrack
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"os"
 | |
| 	"path"
 | |
| 	"strconv"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/influxdata/telegraf/testutil"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func restoreDflts(savedFiles, savedDirs []string) {
 | |
| 	dfltFiles = savedFiles
 | |
| 	dfltDirs = savedDirs
 | |
| }
 | |
| 
 | |
| func TestNoFilesFound(t *testing.T) {
 | |
| 	defer restoreDflts(dfltFiles, dfltDirs)
 | |
| 
 | |
| 	dfltFiles = []string{"baz.txt"}
 | |
| 	dfltDirs = []string{"./foo/bar"}
 | |
| 	c := &Conntrack{}
 | |
| 	acc := &testutil.Accumulator{}
 | |
| 	err := c.Gather(acc)
 | |
| 
 | |
| 	assert.EqualError(t, err, "Conntrack input failed to collect metrics. "+
 | |
| 		"Is the conntrack kernel module loaded?")
 | |
| }
 | |
| 
 | |
| func TestDefaultsUsed(t *testing.T) {
 | |
| 	defer restoreDflts(dfltFiles, dfltDirs)
 | |
| 	tmpdir, err := ioutil.TempDir("", "tmp1")
 | |
| 	assert.NoError(t, err)
 | |
| 	defer os.Remove(tmpdir)
 | |
| 
 | |
| 	tmpFile, err := ioutil.TempFile(tmpdir, "ip_conntrack_count")
 | |
| 	assert.NoError(t, err)
 | |
| 	defer os.Remove(tmpFile.Name())
 | |
| 
 | |
| 	dfltDirs = []string{tmpdir}
 | |
| 	fname := path.Base(tmpFile.Name())
 | |
| 	dfltFiles = []string{fname}
 | |
| 
 | |
| 	count := 1234321
 | |
| 	ioutil.WriteFile(tmpFile.Name(), []byte(strconv.Itoa(count)), 0660)
 | |
| 	c := &Conntrack{}
 | |
| 	acc := &testutil.Accumulator{}
 | |
| 
 | |
| 	c.Gather(acc)
 | |
| 	acc.AssertContainsFields(t, inputName, map[string]interface{}{
 | |
| 		fname: float64(count)})
 | |
| }
 | |
| 
 | |
| func TestConfigsUsed(t *testing.T) {
 | |
| 	defer restoreDflts(dfltFiles, dfltDirs)
 | |
| 	tmpdir, err := ioutil.TempDir("", "tmp1")
 | |
| 	assert.NoError(t, err)
 | |
| 	defer os.Remove(tmpdir)
 | |
| 
 | |
| 	cntFile, err := ioutil.TempFile(tmpdir, "nf_conntrack_count")
 | |
| 	maxFile, err := ioutil.TempFile(tmpdir, "nf_conntrack_max")
 | |
| 	assert.NoError(t, err)
 | |
| 	defer os.Remove(cntFile.Name())
 | |
| 	defer os.Remove(maxFile.Name())
 | |
| 
 | |
| 	dfltDirs = []string{tmpdir}
 | |
| 	cntFname := path.Base(cntFile.Name())
 | |
| 	maxFname := path.Base(maxFile.Name())
 | |
| 	dfltFiles = []string{cntFname, maxFname}
 | |
| 
 | |
| 	count := 1234321
 | |
| 	max := 9999999
 | |
| 	ioutil.WriteFile(cntFile.Name(), []byte(strconv.Itoa(count)), 0660)
 | |
| 	ioutil.WriteFile(maxFile.Name(), []byte(strconv.Itoa(max)), 0660)
 | |
| 	c := &Conntrack{}
 | |
| 	acc := &testutil.Accumulator{}
 | |
| 
 | |
| 	c.Gather(acc)
 | |
| 
 | |
| 	fix := func(s string) string {
 | |
| 		return strings.Replace(s, "nf_", "ip_", 1)
 | |
| 	}
 | |
| 
 | |
| 	acc.AssertContainsFields(t, inputName,
 | |
| 		map[string]interface{}{
 | |
| 			fix(cntFname): float64(count),
 | |
| 			fix(maxFname): float64(max),
 | |
| 		})
 | |
| }
 |