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),
 | 
						|
		})
 | 
						|
}
 |