package sshlog import ( "log" "os" "path/filepath" "strings" "testing" "time" "github.com/cloudflare/cloudflared/logger" ) const logFileName = "test-logger.log" func createLogger(t *testing.T) *Logger { os.Remove(logFileName) l := logger.NewOutputWriter(logger.NewMockWriteManager()) 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.DelayBeforeReconnect(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) } }