90 lines
1.8 KiB
Go
90 lines
1.8 KiB
Go
package sshlog
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
const logFileName = "test-logger.log"
|
|
|
|
func createLogger(t *testing.T) *Logger {
|
|
os.Remove(logFileName)
|
|
l := logrus.New()
|
|
logger, err := NewLogger(logFileName, l, time.Millisecond, 1024)
|
|
if err != nil {
|
|
t.Fatal("couldn't create the logger!", err)
|
|
}
|
|
return logger
|
|
}
|
|
// AUTH-2115 TODO: fix this test
|
|
//func TestWrite(t *testing.T) {
|
|
// testStr := "hi"
|
|
// logger := createLogger(t)
|
|
// defer func() {
|
|
// logger.Close()
|
|
// os.Remove(logFileName)
|
|
// }()
|
|
//
|
|
// logger.Write([]byte(testStr))
|
|
// time.Sleep(2 * time.Millisecond)
|
|
// data, err := ioutil.ReadFile(logFileName)
|
|
// if err != nil {
|
|
// t.Fatal("couldn't read the log file!", err)
|
|
// }
|
|
// checkStr := string(data)
|
|
// if checkStr != testStr {
|
|
// t.Fatal("file data doesn't match!")
|
|
// }
|
|
//}
|
|
|
|
func TestFilenameRotation(t *testing.T) {
|
|
newName := rotationName("dir/bob/acoolloggername.log")
|
|
|
|
dir := filepath.Dir(newName)
|
|
if dir != "dir/bob" {
|
|
t.Fatal("rotation name doesn't respect the directory filepath:", newName)
|
|
}
|
|
|
|
filename := filepath.Base(newName)
|
|
if !strings.HasPrefix(filename, "acoolloggername") {
|
|
t.Fatal("rotation filename is wrong:", filename)
|
|
}
|
|
|
|
ext := filepath.Ext(newName)
|
|
if ext != ".log" {
|
|
t.Fatal("rotation file extension is wrong:", ext)
|
|
}
|
|
}
|
|
|
|
func TestRotation(t *testing.T) {
|
|
logger := createLogger(t)
|
|
|
|
for i := 0; i < 2000; i++ {
|
|
logger.Write([]byte("a string for testing rotation\n"))
|
|
}
|
|
logger.Close()
|
|
|
|
count := 0
|
|
filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
|
|
if err != nil || info.IsDir() {
|
|
return nil
|
|
}
|
|
if strings.HasPrefix(info.Name(), "test-logger") {
|
|
log.Println("deleting: ", path)
|
|
os.Remove(path)
|
|
count++
|
|
}
|
|
return nil
|
|
})
|
|
if count < 2 {
|
|
t.Fatal("rotation didn't roll files:", count)
|
|
}
|
|
|
|
}
|