Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
150
internal/rotate/file_writer_test.go
Normal file
150
internal/rotate/file_writer_test.go
Normal file
|
@ -0,0 +1,150 @@
|
|||
package rotate
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFileWriter_NoRotation(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test"), 0, 0, 0)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
_, err = writer.Write([]byte("Hello World"))
|
||||
require.NoError(t, err)
|
||||
_, err = writer.Write([]byte("Hello World 2"))
|
||||
require.NoError(t, err)
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 1)
|
||||
}
|
||||
|
||||
func TestFileWriter_TimeRotation(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
interval, err := time.ParseDuration("10ms")
|
||||
require.NoError(t, err)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test"), interval, 0, -1)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
_, err = writer.Write([]byte("Hello World"))
|
||||
require.NoError(t, err)
|
||||
time.Sleep(interval)
|
||||
_, err = writer.Write([]byte("Hello World 2"))
|
||||
require.NoError(t, err)
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 2)
|
||||
}
|
||||
|
||||
func TestFileWriter_ReopenTimeRotation(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
interval, err := time.ParseDuration("10ms")
|
||||
require.NoError(t, err)
|
||||
filePath := filepath.Join(tempDir, "test.log")
|
||||
err = os.WriteFile(filePath, []byte("Hello World"), 0640)
|
||||
time.Sleep(interval)
|
||||
require.NoError(t, err)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), interval, 0, -1)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 2)
|
||||
}
|
||||
|
||||
func TestFileWriter_SizeRotation(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
maxSize := int64(9)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
_, err = writer.Write([]byte("Hello World"))
|
||||
require.NoError(t, err)
|
||||
_, err = writer.Write([]byte("World 2"))
|
||||
require.NoError(t, err)
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 2)
|
||||
}
|
||||
|
||||
func TestFileWriter_ReopenSizeRotation(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
maxSize := int64(12)
|
||||
filePath := filepath.Join(tempDir, "test.log")
|
||||
err := os.WriteFile(filePath, []byte("Hello World"), 0640)
|
||||
require.NoError(t, err)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
_, err = writer.Write([]byte("Hello World Again"))
|
||||
require.NoError(t, err)
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 2)
|
||||
}
|
||||
|
||||
func TestFileWriter_DeleteArchives(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping long test in short mode")
|
||||
}
|
||||
|
||||
tempDir := t.TempDir()
|
||||
maxSize := int64(5)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, 2)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, writer.Close()) })
|
||||
|
||||
_, err = writer.Write([]byte("First file"))
|
||||
require.NoError(t, err)
|
||||
// File names include the date with second precision
|
||||
// So, to force rotation with different file names
|
||||
// we need to wait
|
||||
time.Sleep(1 * time.Second)
|
||||
_, err = writer.Write([]byte("Second file"))
|
||||
require.NoError(t, err)
|
||||
time.Sleep(1 * time.Second)
|
||||
_, err = writer.Write([]byte("Third file"))
|
||||
require.NoError(t, err)
|
||||
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 3)
|
||||
|
||||
for _, tempFile := range files {
|
||||
var bytes []byte
|
||||
var err error
|
||||
path := filepath.Join(tempDir, tempFile.Name())
|
||||
if bytes, err = os.ReadFile(path); err != nil {
|
||||
t.Error(err.Error())
|
||||
return
|
||||
}
|
||||
contents := string(bytes)
|
||||
|
||||
if contents != "" && contents != "Second file" && contents != "Third file" {
|
||||
t.Error("Should have deleted the eldest log file")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestFileWriter_CloseDoesNotRotate(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
maxSize := int64(9)
|
||||
writer, err := NewFileWriter(filepath.Join(tempDir, "test.log"), 0, maxSize, -1)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, writer.Close())
|
||||
|
||||
files, err := os.ReadDir(tempDir)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, files, 1)
|
||||
require.Regexp(t, "^test.log$", files[0].Name())
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue