test: use `T.TempDir` to create temporary test directory (#10988)

This commit is contained in:
Eng Zer Jun 2022-04-19 03:27:59 +08:00 committed by GitHub
parent 577c0462b8
commit c3d176029d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 136 additions and 239 deletions

View File

@ -11,11 +11,10 @@ import (
) )
func TestFileWriter_NoRotation(t *testing.T) { func TestFileWriter_NoRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationNo") tempDir := t.TempDir()
require.NoError(t, err)
writer, err := NewFileWriter(filepath.Join(tempDir, "test"), 0, 0, 0) writer, err := NewFileWriter(filepath.Join(tempDir, "test"), 0, 0, 0)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
_, err = writer.Write([]byte("Hello World")) _, err = writer.Write([]byte("Hello World"))
require.NoError(t, err) require.NoError(t, err)
@ -26,12 +25,11 @@ func TestFileWriter_NoRotation(t *testing.T) {
} }
func TestFileWriter_TimeRotation(t *testing.T) { func TestFileWriter_TimeRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationTime") tempDir := t.TempDir()
require.NoError(t, err)
interval, _ := time.ParseDuration("10ms") interval, _ := time.ParseDuration("10ms")
writer, err := NewFileWriter(filepath.Join(tempDir, "test"), interval, 0, -1) writer, err := NewFileWriter(filepath.Join(tempDir, "test"), interval, 0, -1)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
_, err = writer.Write([]byte("Hello World")) _, err = writer.Write([]byte("Hello World"))
require.NoError(t, err) require.NoError(t, err)
@ -43,28 +41,26 @@ func TestFileWriter_TimeRotation(t *testing.T) {
} }
func TestFileWriter_ReopenTimeRotation(t *testing.T) { func TestFileWriter_ReopenTimeRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationTime") tempDir := t.TempDir()
require.NoError(t, err)
interval, _ := time.ParseDuration("10ms") interval, _ := time.ParseDuration("10ms")
filePath := filepath.Join(tempDir, "test.log") filePath := filepath.Join(tempDir, "test.log")
err = os.WriteFile(filePath, []byte("Hello World"), 0644) err := os.WriteFile(filePath, []byte("Hello World"), 0644)
time.Sleep(interval) time.Sleep(interval)
assert.NoError(t, err) assert.NoError(t, err)
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), interval, 0, -1) writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), interval, 0, -1)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
files, _ := os.ReadDir(tempDir) files, _ := os.ReadDir(tempDir)
assert.Equal(t, 2, len(files)) assert.Equal(t, 2, len(files))
} }
func TestFileWriter_SizeRotation(t *testing.T) { func TestFileWriter_SizeRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationSize") tempDir := t.TempDir()
require.NoError(t, err)
maxSize := int64(9) maxSize := int64(9)
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1) writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
_, err = writer.Write([]byte("Hello World")) _, err = writer.Write([]byte("Hello World"))
require.NoError(t, err) require.NoError(t, err)
@ -75,15 +71,14 @@ func TestFileWriter_SizeRotation(t *testing.T) {
} }
func TestFileWriter_ReopenSizeRotation(t *testing.T) { func TestFileWriter_ReopenSizeRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationSize") tempDir := t.TempDir()
require.NoError(t, err)
maxSize := int64(12) maxSize := int64(12)
filePath := filepath.Join(tempDir, "test.log") filePath := filepath.Join(tempDir, "test.log")
err = os.WriteFile(filePath, []byte("Hello World"), 0644) err := os.WriteFile(filePath, []byte("Hello World"), 0644)
assert.NoError(t, err) assert.NoError(t, err)
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1) writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
_, err = writer.Write([]byte("Hello World Again")) _, err = writer.Write([]byte("Hello World Again"))
require.NoError(t, err) require.NoError(t, err)
@ -96,12 +91,11 @@ func TestFileWriter_DeleteArchives(t *testing.T) {
t.Skip("Skipping long test in short mode") t.Skip("Skipping long test in short mode")
} }
tempDir, err := os.MkdirTemp("", "RotationDeleteArchives") tempDir := t.TempDir()
require.NoError(t, err)
maxSize := int64(5) maxSize := int64(5)
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, 2) writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, 2)
require.NoError(t, err) require.NoError(t, err)
defer func() { writer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, writer.Close()) })
_, err = writer.Write([]byte("First file")) _, err = writer.Write([]byte("First file"))
require.NoError(t, err) require.NoError(t, err)
@ -136,14 +130,11 @@ func TestFileWriter_DeleteArchives(t *testing.T) {
} }
func TestFileWriter_CloseRotates(t *testing.T) { func TestFileWriter_CloseRotates(t *testing.T) {
tempDir, err := os.MkdirTemp("", "RotationClose") tempDir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(tempDir)
maxSize := int64(9) maxSize := int64(9)
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1) writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
require.NoError(t, err) require.NoError(t, err)
require.NoError(t, writer.Close())
writer.Close()
files, _ := os.ReadDir(tempDir) files, _ := os.ReadDir(tempDir)
assert.Equal(t, 1, len(files)) assert.Equal(t, 1, len(files))

View File

@ -96,8 +96,7 @@ func TestWriteToTruncatedFile(t *testing.T) {
} }
func TestWriteToFileInRotation(t *testing.T) { func TestWriteToFileInRotation(t *testing.T) {
tempDir, err := os.MkdirTemp("", "LogRotation") tempDir := t.TempDir()
require.NoError(t, err)
cfg := createBasicLogConfig(filepath.Join(tempDir, "test.log")) cfg := createBasicLogConfig(filepath.Join(tempDir, "test.log"))
cfg.LogTarget = LogTargetFile cfg.LogTarget = LogTargetFile
cfg.RotationMaxSize = config.Size(30) cfg.RotationMaxSize = config.Size(30)
@ -105,7 +104,7 @@ func TestWriteToFileInRotation(t *testing.T) {
// Close the writer here, otherwise the temp folder cannot be deleted because the current log file is in use. // Close the writer here, otherwise the temp folder cannot be deleted because the current log file is in use.
closer, isCloser := writer.(io.Closer) closer, isCloser := writer.(io.Closer)
assert.True(t, isCloser) assert.True(t, isCloser)
defer func() { closer.Close(); os.RemoveAll(tempDir) }() t.Cleanup(func() { require.NoError(t, closer.Close()) })
log.Printf("I! TEST 1") // Writes 31 bytes, will rotate log.Printf("I! TEST 1") // Writes 31 bytes, will rotate
log.Printf("I! TEST") // Writes 29 byes, no rotation expected log.Printf("I! TEST") // Writes 29 byes, no rotation expected

View File

@ -112,12 +112,7 @@ func TestGather(t *testing.T) {
} }
func TestFindSockets(t *testing.T) { func TestFindSockets(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "socktest") tmpdir := t.TempDir()
require.NoError(t, err)
defer func() {
err := os.Remove(tmpdir)
require.NoError(t, err)
}()
c := &Ceph{ c := &Ceph{
CephBinary: "foo", CephBinary: "foo",
OsdPrefix: "ceph-osd", OsdPrefix: "ceph-osd",

View File

@ -34,13 +34,11 @@ func TestNoFilesFound(t *testing.T) {
func TestDefaultsUsed(t *testing.T) { func TestDefaultsUsed(t *testing.T) {
defer restoreDflts(dfltFiles, dfltDirs) defer restoreDflts(dfltFiles, dfltDirs)
tmpdir, err := os.MkdirTemp("", "tmp1") tmpdir := t.TempDir()
require.NoError(t, err)
defer os.Remove(tmpdir)
tmpFile, err := os.CreateTemp(tmpdir, "ip_conntrack_count") tmpFile, err := os.CreateTemp(tmpdir, "ip_conntrack_count")
require.NoError(t, err) require.NoError(t, err)
defer os.Remove(tmpFile.Name()) t.Cleanup(func() { require.NoError(t, tmpFile.Close()) })
dfltDirs = []string{tmpdir} dfltDirs = []string{tmpdir}
fname := path.Base(tmpFile.Name()) fname := path.Base(tmpFile.Name())
@ -58,16 +56,15 @@ func TestDefaultsUsed(t *testing.T) {
func TestConfigsUsed(t *testing.T) { func TestConfigsUsed(t *testing.T) {
defer restoreDflts(dfltFiles, dfltDirs) defer restoreDflts(dfltFiles, dfltDirs)
tmpdir, err := os.MkdirTemp("", "tmp1") tmpdir := t.TempDir()
require.NoError(t, err)
defer os.Remove(tmpdir)
cntFile, err := os.CreateTemp(tmpdir, "nf_conntrack_count") cntFile, err := os.CreateTemp(tmpdir, "nf_conntrack_count")
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, cntFile.Close()) })
maxFile, err := os.CreateTemp(tmpdir, "nf_conntrack_max") maxFile, err := os.CreateTemp(tmpdir, "nf_conntrack_max")
require.NoError(t, err) require.NoError(t, err)
defer os.Remove(cntFile.Name()) t.Cleanup(func() { require.NoError(t, maxFile.Close()) })
defer os.Remove(maxFile.Name())
dfltDirs = []string{tmpdir} dfltDirs = []string{tmpdir}
cntFname := path.Base(cntFile.Name()) cntFname := path.Base(cntFile.Name())

View File

@ -3,11 +3,12 @@ package directory_monitor
import ( import (
"bytes" "bytes"
"compress/gzip" "compress/gzip"
"github.com/stretchr/testify/require"
"os" "os"
"path/filepath" "path/filepath"
"testing" "testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/plugins/parsers" "github.com/influxdata/telegraf/plugins/parsers"
"github.com/influxdata/telegraf/plugins/parsers/csv" "github.com/influxdata/telegraf/plugins/parsers/csv"
"github.com/influxdata/telegraf/testutil" "github.com/influxdata/telegraf/testutil"
@ -19,12 +20,8 @@ func TestCSVGZImport(t *testing.T) {
testCsvGzFile := "test.csv.gz" testCsvGzFile := "test.csv.gz"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -33,7 +30,7 @@ func TestCSVGZImport(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 100000, FileQueueSize: 100000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
r.SetParserFunc(func() (parsers.Parser, error) { r.SetParserFunc(func() (parsers.Parser, error) {
@ -87,12 +84,8 @@ func TestMultipleJSONFileImports(t *testing.T) {
testJSONFile := "test.json" testJSONFile := "test.json"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -101,7 +94,7 @@ func TestMultipleJSONFileImports(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 1000, FileQueueSize: 1000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
parserConfig := parsers.Config{ parserConfig := parsers.Config{
@ -139,12 +132,8 @@ func TestFileTag(t *testing.T) {
testJSONFile := "test.json" testJSONFile := "test.json"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -154,7 +143,7 @@ func TestFileTag(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 1000, FileQueueSize: 1000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
parserConfig := parsers.Config{ parserConfig := parsers.Config{
@ -198,12 +187,8 @@ func TestCSVNoSkipRows(t *testing.T) {
testCsvFile := "test.csv" testCsvFile := "test.csv"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -212,7 +197,7 @@ func TestCSVNoSkipRows(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 100000, FileQueueSize: 100000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
r.SetParserFunc(func() (parsers.Parser, error) { r.SetParserFunc(func() (parsers.Parser, error) {
@ -270,12 +255,8 @@ func TestCSVSkipRows(t *testing.T) {
testCsvFile := "test.csv" testCsvFile := "test.csv"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -284,7 +265,7 @@ func TestCSVSkipRows(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 100000, FileQueueSize: 100000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
r.SetParserFunc(func() (parsers.Parser, error) { r.SetParserFunc(func() (parsers.Parser, error) {
@ -344,12 +325,8 @@ func TestCSVMultiHeader(t *testing.T) {
testCsvFile := "test.csv" testCsvFile := "test.csv"
// Establish process directory and finished directory. // Establish process directory and finished directory.
finishedDirectory, err := os.MkdirTemp("", "finished") finishedDirectory := t.TempDir()
require.NoError(t, err) processDirectory := t.TempDir()
processDirectory, err := os.MkdirTemp("", "test")
require.NoError(t, err)
defer os.RemoveAll(processDirectory)
defer os.RemoveAll(finishedDirectory)
// Init plugin. // Init plugin.
r := DirectoryMonitor{ r := DirectoryMonitor{
@ -358,7 +335,7 @@ func TestCSVMultiHeader(t *testing.T) {
MaxBufferedMetrics: 1000, MaxBufferedMetrics: 1000,
FileQueueSize: 100000, FileQueueSize: 100000,
} }
err = r.Init() err := r.Init()
require.NoError(t, err) require.NoError(t, err)
r.SetParserFunc(func() (parsers.Parser, error) { r.SetParserFunc(func() (parsers.Parser, error) {

View File

@ -9,9 +9,7 @@ import (
) )
func TestSysctlFSGather(t *testing.T) { func TestSysctlFSGather(t *testing.T) {
td, err := os.MkdirTemp("", "") td := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(td)
require.NoError(t, os.WriteFile(td+"/aio-nr", []byte("100\n"), 0644)) require.NoError(t, os.WriteFile(td+"/aio-nr", []byte("100\n"), 0644))
require.NoError(t, os.WriteFile(td+"/aio-max-nr", []byte("101\n"), 0644)) require.NoError(t, os.WriteFile(td+"/aio-max-nr", []byte("101\n"), 0644))

View File

@ -109,9 +109,17 @@ func TestGrokParseLogFiles(t *testing.T) {
} }
func TestGrokParseLogFilesAppearLater(t *testing.T) { func TestGrokParseLogFilesAppearLater(t *testing.T) {
// TODO: t.TempDir will fail on Windows because it could not remove
// test.a.log file. This seems like an issue with the tail package, it
// is not closing the os.File properly on Stop.
// === RUN TestGrokParseLogFilesAppearLater
//2022/04/16 11:05:13 D! [] Tail added for file: C:\Users\circleci\AppData\Local\Temp\TestGrokParseLogFilesAppearLater3687440534\001\test_a.log
//2022/04/16 11:05:13 D! [] Tail dropped for file: C:\Users\circleci\AppData\Local\Temp\TestGrokParseLogFilesAppearLater3687440534\001\test_a.log
// testing.go:1090: TempDir RemoveAll cleanup: CreateFile C:\Users\circleci\AppData\Local\Temp\TestGrokParseLogFilesAppearLater3687440534\001: Access is denied.
//--- FAIL: TestGrokParseLogFilesAppearLater (1.68s)
emptydir, err := os.MkdirTemp("", "TestGrokParseLogFilesAppearLater") emptydir, err := os.MkdirTemp("", "TestGrokParseLogFilesAppearLater")
defer os.RemoveAll(emptydir)
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(emptydir)
logparser := &LogParserPlugin{ logparser := &LogParserPlugin{
Log: testutil.Logger{}, Log: testutil.Logger{},

View File

@ -14,9 +14,7 @@ import (
) )
func TestGather(t *testing.T) { func TestGather(t *testing.T) {
td, err := os.MkdirTemp("", "") td := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(td)
for _, q := range []string{"active", "hold", "incoming", "maildrop", "deferred/0/0", "deferred/F/F"} { for _, q := range []string{"active", "hold", "incoming", "maildrop", "deferred/0/0", "deferred/F/F"} {
require.NoError(t, os.MkdirAll(filepath.FromSlash(td+"/"+q), 0755)) require.NoError(t, os.MkdirAll(filepath.FromSlash(td+"/"+q), 0755))

View File

@ -386,10 +386,8 @@ func TestGather_cgroupPIDs(t *testing.T) {
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
t.Skip("no cgroups in windows") t.Skip("no cgroups in windows")
} }
td, err := os.MkdirTemp("", "") td := t.TempDir()
require.NoError(t, err) err := os.WriteFile(filepath.Join(td, "cgroup.procs"), []byte("1234\n5678\n"), 0644)
defer os.RemoveAll(td)
err = os.WriteFile(filepath.Join(td, "cgroup.procs"), []byte("1234\n5678\n"), 0644)
require.NoError(t, err) require.NoError(t, err)
p := Procstat{ p := Procstat{

View File

@ -7,7 +7,6 @@ import (
"log" "log"
"net" "net"
"os" "os"
"path/filepath"
"runtime" "runtime"
"testing" "testing"
"time" "time"
@ -69,10 +68,7 @@ func TestSocketListener_tcp_tls(t *testing.T) {
} }
func TestSocketListener_unix_tls(t *testing.T) { func TestSocketListener_unix_tls(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "sl.TestSocketListener_unix_tls.sock")
sl := newSocketListener() sl := newSocketListener()
sl.Log = testutil.Logger{} sl.Log = testutil.Logger{}
@ -80,7 +76,7 @@ func TestSocketListener_unix_tls(t *testing.T) {
sl.ServerConfig = *pki.TLSServerConfig() sl.ServerConfig = *pki.TLSServerConfig()
acc := &testutil.Accumulator{} acc := &testutil.Accumulator{}
err = sl.Start(acc) err := sl.Start(acc)
require.NoError(t, err) require.NoError(t, err)
defer sl.Stop() defer sl.Stop()
@ -135,10 +131,7 @@ func TestSocketListener_udp(t *testing.T) {
} }
func TestSocketListener_unix(t *testing.T) { func TestSocketListener_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "sl.TestSocketListener_unix.sock")
testEmptyLog := prepareLog(t) testEmptyLog := prepareLog(t)
defer testEmptyLog() defer testEmptyLog()
@ -151,7 +144,7 @@ func TestSocketListener_unix(t *testing.T) {
sl.ReadBufferSize = config.Size(1024) sl.ReadBufferSize = config.Size(1024)
acc := &testutil.Accumulator{} acc := &testutil.Accumulator{}
err = sl.Start(acc) err := sl.Start(acc)
require.NoError(t, err) require.NoError(t, err)
defer sl.Stop() defer sl.Stop()
@ -166,16 +159,15 @@ func TestSocketListener_unixgram(t *testing.T) {
t.Skip("Skipping on Windows, as unixgram sockets are not supported") t.Skip("Skipping on Windows, as unixgram sockets are not supported")
} }
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "sl.TestSocketListener_unixgram.sock")
testEmptyLog := prepareLog(t) testEmptyLog := prepareLog(t)
defer testEmptyLog() defer testEmptyLog()
_, err = os.Create(sock) f, err := os.Create(sock)
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, f.Close()) })
sl := newSocketListener() sl := newSocketListener()
sl.Log = testutil.Logger{} sl.Log = testutil.Logger{}
sl.ServiceAddress = "unixgram://" + sock sl.ServiceAddress = "unixgram://" + sock

View File

@ -21,9 +21,7 @@ var ex2 = `{"timestamp":"2017-03-06T07:43:39.000397+0000","event_type":"stats","
var ex3 = `{"timestamp":"2017-03-06T07:43:39.000397+0000","event_type":"stats","stats":{"threads": { "W#05-wlp4s0": { "capture":{"kernel_packets":905344474,"kernel_drops":78355440}}}}}` var ex3 = `{"timestamp":"2017-03-06T07:43:39.000397+0000","event_type":"stats","stats":{"threads": { "W#05-wlp4s0": { "capture":{"kernel_packets":905344474,"kernel_drops":78355440}}}}}`
func TestSuricataLarge(t *testing.T) { func TestSuricataLarge(t *testing.T) {
dir, err := os.MkdirTemp("", "test") dir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63())) tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
@ -61,9 +59,7 @@ func TestSuricataLarge(t *testing.T) {
} }
func TestSuricataAlerts(t *testing.T) { func TestSuricataAlerts(t *testing.T) {
dir, err := os.MkdirTemp("", "test") dir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63())) tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
@ -116,9 +112,7 @@ func TestSuricataAlerts(t *testing.T) {
} }
func TestSuricata(t *testing.T) { func TestSuricata(t *testing.T) {
dir, err := os.MkdirTemp("", "test") dir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63())) tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
@ -162,9 +156,7 @@ func TestSuricata(t *testing.T) {
} }
func TestThreadStats(t *testing.T) { func TestThreadStats(t *testing.T) {
dir, err := os.MkdirTemp("", "test") dir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63())) tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
@ -212,9 +204,7 @@ func TestThreadStats(t *testing.T) {
} }
func TestSuricataInvalid(t *testing.T) { func TestSuricataInvalid(t *testing.T) {
dir, err := os.MkdirTemp("", "test") dir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63())) tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
@ -254,10 +244,7 @@ func TestSuricataInvalidPath(t *testing.T) {
} }
func TestSuricataTooLongLine(t *testing.T) { func TestSuricataTooLongLine(t *testing.T) {
dir, err := os.MkdirTemp("", "test") tmpfn := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
Source: tmpfn, Source: tmpfn,
@ -282,10 +269,7 @@ func TestSuricataTooLongLine(t *testing.T) {
} }
func TestSuricataEmptyJSON(t *testing.T) { func TestSuricataEmptyJSON(t *testing.T) {
dir, err := os.MkdirTemp("", "test") tmpfn := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
Source: tmpfn, Source: tmpfn,
@ -309,10 +293,7 @@ func TestSuricataEmptyJSON(t *testing.T) {
} }
func TestSuricataDisconnectSocket(t *testing.T) { func TestSuricataDisconnectSocket(t *testing.T) {
dir, err := os.MkdirTemp("", "test") tmpfn := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
Source: tmpfn, Source: tmpfn,
@ -345,10 +326,7 @@ func TestSuricataDisconnectSocket(t *testing.T) {
} }
func TestSuricataStartStop(t *testing.T) { func TestSuricataStartStop(t *testing.T) {
dir, err := os.MkdirTemp("", "test") tmpfn := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(dir)
tmpfn := filepath.Join(dir, fmt.Sprintf("t%d", rand.Int63()))
s := Suricata{ s := Suricata{
Source: tmpfn, Source: tmpfn,

View File

@ -3,8 +3,6 @@ package syslog
import ( import (
"crypto/tls" "crypto/tls"
"net" "net"
"os"
"path/filepath"
"testing" "testing"
"time" "time"
@ -269,33 +267,21 @@ func TestNonTransparentStrictWithZeroKeepAlive_tcp_tls(t *testing.T) {
} }
func TestNonTransparentStrict_unix(t *testing.T) { func TestNonTransparentStrict_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestStrict_unix.sock")
testStrictNonTransparent(t, "unix", sock, false, nil) testStrictNonTransparent(t, "unix", sock, false, nil)
} }
func TestNonTransparentBestEffort_unix(t *testing.T) { func TestNonTransparentBestEffort_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestBestEffort_unix.sock")
testBestEffortNonTransparent(t, "unix", sock, false) testBestEffortNonTransparent(t, "unix", sock, false)
} }
func TestNonTransparentStrict_unix_tls(t *testing.T) { func TestNonTransparentStrict_unix_tls(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestStrict_unix_tls.sock")
testStrictNonTransparent(t, "unix", sock, true, nil) testStrictNonTransparent(t, "unix", sock, true, nil)
} }
func TestNonTransparentBestEffort_unix_tls(t *testing.T) { func TestNonTransparentBestEffort_unix_tls(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestBestEffort_unix_tls.sock")
testBestEffortNonTransparent(t, "unix", sock, true) testBestEffortNonTransparent(t, "unix", sock, true)
} }

View File

@ -4,8 +4,6 @@ import (
"crypto/tls" "crypto/tls"
"fmt" "fmt"
"net" "net"
"os"
"path/filepath"
"testing" "testing"
"time" "time"
@ -469,33 +467,21 @@ func TestOctetCountingStrictWithZeroKeepAlive_tcp_tls(t *testing.T) {
} }
func TestOctetCountingStrict_unix(t *testing.T) { func TestOctetCountingStrict_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestStrict_unix.sock")
testStrictOctetCounting(t, "unix", sock, false, nil) testStrictOctetCounting(t, "unix", sock, false, nil)
} }
func TestOctetCountingBestEffort_unix(t *testing.T) { func TestOctetCountingBestEffort_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestBestEffort_unix.sock")
testBestEffortOctetCounting(t, "unix", sock, false) testBestEffortOctetCounting(t, "unix", sock, false)
} }
func TestOctetCountingStrict_unix_tls(t *testing.T) { func TestOctetCountingStrict_unix_tls(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestStrict_unix_tls.sock")
testStrictOctetCounting(t, "unix", sock, true, nil) testStrictOctetCounting(t, "unix", sock, true, nil)
} }
func TestOctetCountingBestEffort_unix_tls(t *testing.T) { func TestOctetCountingBestEffort_unix_tls(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestBestEffort_unix_tls.sock")
testBestEffortOctetCounting(t, "unix", sock, true) testBestEffortOctetCounting(t, "unix", sock, true)
} }

View File

@ -4,7 +4,6 @@ import (
"fmt" "fmt"
"net" "net"
"os" "os"
"path/filepath"
"runtime" "runtime"
"sync/atomic" "sync/atomic"
"testing" "testing"
@ -289,12 +288,11 @@ func TestBestEffort_unixgram(t *testing.T) {
t.Skip("Skipping on Windows, as unixgram sockets are not supported") t.Skip("Skipping on Windows, as unixgram sockets are not supported")
} }
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err) f, err := os.Create(sock)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestBestEffort_unixgram.sock")
_, err = os.Create(sock)
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, f.Close()) })
testRFC5426(t, "unixgram", sock, true) testRFC5426(t, "unixgram", sock, true)
} }
@ -303,12 +301,11 @@ func TestStrict_unixgram(t *testing.T) {
t.Skip("Skipping on Windows, as unixgram sockets are not supported") t.Skip("Skipping on Windows, as unixgram sockets are not supported")
} }
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err) f, err := os.Create(sock)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "syslog.TestStrict_unixgram.sock")
_, err = os.Create(sock)
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, f.Close()) })
testRFC5426(t, "unixgram", sock, false) testRFC5426(t, "unixgram", sock, false)
} }

View File

@ -1,7 +1,6 @@
package syslog package syslog
import ( import (
"os"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings" "strings"
@ -45,9 +44,7 @@ func TestAddress(t *testing.T) {
require.EqualError(t, err, "unknown protocol 'unsupported' in 'example.com:6514'") require.EqualError(t, err, "unknown protocol 'unsupported' in 'example.com:6514'")
require.Error(t, err) require.Error(t, err)
tmpdir, err := os.MkdirTemp("", "telegraf") tmpdir := t.TempDir()
defer os.RemoveAll(tmpdir)
require.NoError(t, err)
sock := filepath.Join(tmpdir, "syslog.TestAddress.sock") sock := filepath.Join(tmpdir, "syslog.TestAddress.sock")
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {

View File

@ -21,7 +21,6 @@ const (
func TestFileExistingFile(t *testing.T) { func TestFileExistingFile(t *testing.T) {
fh := createFile(t) fh := createFile(t)
defer os.Remove(fh.Name())
s, _ := serializers.NewInfluxSerializer() s, _ := serializers.NewInfluxSerializer()
f := File{ f := File{
Files: []string{fh.Name()}, Files: []string{fh.Name()},
@ -43,7 +42,6 @@ func TestFileExistingFile(t *testing.T) {
func TestFileNewFile(t *testing.T) { func TestFileNewFile(t *testing.T) {
s, _ := serializers.NewInfluxSerializer() s, _ := serializers.NewInfluxSerializer()
fh := tmpFile(t) fh := tmpFile(t)
defer os.Remove(fh)
f := File{ f := File{
Files: []string{fh}, Files: []string{fh},
serializer: s, serializer: s,
@ -63,11 +61,8 @@ func TestFileNewFile(t *testing.T) {
func TestFileExistingFiles(t *testing.T) { func TestFileExistingFiles(t *testing.T) {
fh1 := createFile(t) fh1 := createFile(t)
defer os.Remove(fh1.Name())
fh2 := createFile(t) fh2 := createFile(t)
defer os.Remove(fh2.Name())
fh3 := createFile(t) fh3 := createFile(t)
defer os.Remove(fh3.Name())
s, _ := serializers.NewInfluxSerializer() s, _ := serializers.NewInfluxSerializer()
f := File{ f := File{
@ -92,11 +87,8 @@ func TestFileExistingFiles(t *testing.T) {
func TestFileNewFiles(t *testing.T) { func TestFileNewFiles(t *testing.T) {
s, _ := serializers.NewInfluxSerializer() s, _ := serializers.NewInfluxSerializer()
fh1 := tmpFile(t) fh1 := tmpFile(t)
defer os.Remove(fh1)
fh2 := tmpFile(t) fh2 := tmpFile(t)
defer os.Remove(fh2)
fh3 := tmpFile(t) fh3 := tmpFile(t)
defer os.Remove(fh3)
f := File{ f := File{
Files: []string{fh1, fh2, fh3}, Files: []string{fh1, fh2, fh3},
serializer: s, serializer: s,
@ -118,9 +110,7 @@ func TestFileNewFiles(t *testing.T) {
func TestFileBoth(t *testing.T) { func TestFileBoth(t *testing.T) {
fh1 := createFile(t) fh1 := createFile(t)
defer os.Remove(fh1.Name())
fh2 := tmpFile(t) fh2 := tmpFile(t)
defer os.Remove(fh2)
s, _ := serializers.NewInfluxSerializer() s, _ := serializers.NewInfluxSerializer()
f := File{ f := File{
@ -183,8 +173,11 @@ func TestFileStdout(t *testing.T) {
} }
func createFile(t *testing.T) *os.File { func createFile(t *testing.T) *os.File {
f, err := os.CreateTemp("", "") f, err := os.CreateTemp(t.TempDir(), "")
require.NoError(t, err) require.NoError(t, err)
t.Cleanup(func() {
require.NoError(t, f.Close())
})
_, err = f.WriteString("cpu,cpu=cpu0 value=100 1455312810012459582\n") _, err = f.WriteString("cpu,cpu=cpu0 value=100 1455312810012459582\n")
require.NoError(t, err) require.NoError(t, err)
@ -192,10 +185,7 @@ func createFile(t *testing.T) *os.File {
} }
func tmpFile(t *testing.T) string { func tmpFile(t *testing.T) string {
d, err := os.MkdirTemp("", "") return t.TempDir() + internal.RandomString(10)
require.NoError(t, err)
return d + internal.RandomString(10)
} }
func validateFile(t *testing.T, fileName, expS string) { func validateFile(t *testing.T, fileName, expS string) {

View File

@ -12,7 +12,6 @@ import (
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"net/url" "net/url"
"os"
"path" "path"
"testing" "testing"
"time" "time"
@ -618,11 +617,7 @@ func TestHTTP_WriteContentEncodingGzip(t *testing.T) {
} }
func TestHTTP_UnixSocket(t *testing.T) { func TestHTTP_UnixSocket(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf-test") tmpdir := t.TempDir()
if err != nil {
require.NoError(t, err)
}
defer os.RemoveAll(tmpdir)
sock := path.Join(tmpdir, "test.sock") sock := path.Join(tmpdir, "test.sock")
listener, err := net.Listen("unix", sock) listener, err := net.Listen("unix", sock)

View File

@ -3,8 +3,6 @@ package socket_writer
import ( import (
"bufio" "bufio"
"net" "net"
"os"
"path/filepath"
"runtime" "runtime"
"sync" "sync"
"testing" "testing"
@ -45,10 +43,7 @@ func TestSocketWriter_udp(t *testing.T) {
} }
func TestSocketWriter_unix(t *testing.T) { func TestSocketWriter_unix(t *testing.T) {
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "sw.TestSocketWriter_unix.sock")
listener, err := net.Listen("unix", sock) listener, err := net.Listen("unix", sock)
require.NoError(t, err) require.NoError(t, err)
@ -70,10 +65,7 @@ func TestSocketWriter_unixgram(t *testing.T) {
t.Skip("Skipping on Windows, as unixgram sockets are not supported") t.Skip("Skipping on Windows, as unixgram sockets are not supported")
} }
tmpdir, err := os.MkdirTemp("", "telegraf") sock := testutil.TempSocket(t)
require.NoError(t, err)
defer os.RemoveAll(tmpdir)
sock := filepath.Join(tmpdir, "sw.TSW_unixgram.sock")
listener, err := net.ListenPacket("unixgram", sock) listener, err := net.ListenPacket("unixgram", sock)
require.NoError(t, err) require.NoError(t, err)

View File

@ -169,9 +169,7 @@ func TestMysqlIntegration(t *testing.T) {
const username = "root" const username = "root"
password := pwgen(32) password := pwgen(32)
outDir, err := os.MkdirTemp("", "tg-mysql-*") outDir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(outDir)
ctx := context.Background() ctx := context.Background()
req := testcontainers.GenericContainerRequest{ req := testcontainers.GenericContainerRequest{
@ -259,9 +257,7 @@ func TestPostgresIntegration(t *testing.T) {
const username = "postgres" const username = "postgres"
password := pwgen(32) password := pwgen(32)
outDir, err := os.MkdirTemp("", "tg-postgres-*") outDir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(outDir)
ctx := context.Background() ctx := context.Background()
req := testcontainers.GenericContainerRequest{ req := testcontainers.GenericContainerRequest{
@ -361,9 +357,7 @@ func TestClickHouseIntegration(t *testing.T) {
// default username for clickhouse is default // default username for clickhouse is default
const username = "default" const username = "default"
outDir, err := os.MkdirTemp("", "tg-clickhouse-*") outDir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(outDir)
ctx := context.Background() ctx := context.Background()
req := testcontainers.GenericContainerRequest{ req := testcontainers.GenericContainerRequest{

View File

@ -7,7 +7,6 @@ package sql
import ( import (
gosql "database/sql" gosql "database/sql"
"os"
"path/filepath" "path/filepath"
"testing" "testing"
"time" "time"
@ -17,9 +16,7 @@ import (
) )
func TestSqlite(t *testing.T) { func TestSqlite(t *testing.T) {
outDir, err := os.MkdirTemp("", "tg-sqlite-*") outDir := t.TempDir()
require.NoError(t, err)
defer os.RemoveAll(outDir)
dbfile := filepath.Join(outDir, "db") dbfile := filepath.Join(outDir, "db")

32
testutil/socket.go Normal file
View File

@ -0,0 +1,32 @@
package testutil
import (
"os"
"path/filepath"
"runtime"
"testing"
"github.com/stretchr/testify/require"
)
func TempSocket(tb testing.TB) string {
// On MacOS, the maximum path length of Unix domain socket is 104
// characters. (https://unix.stackexchange.com/a/367012/376279)
//
// On MacOS, tb.TempDir() returns e.g.
// /var/folders/bl/wbxjgtzx7j5_mjsmfr3ynlc00000gp/T/<the-test-name>/001/socket.sock
//
// If the name of the test is long, the path length could exceed 104
// characters, and this would result in listen unix ...: bind: invalid argument
if runtime.GOOS == "darwin" {
sock := filepath.Join("/tmp", "sock")
tb.Cleanup(func() {
require.NoError(tb, os.RemoveAll(sock))
})
return sock
}
return filepath.Join(tb.TempDir(), "sock")
}