logger_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package sshlog
  2. import (
  3. "log"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. "testing"
  8. "time"
  9. "github.com/cloudflare/cloudflared/logger"
  10. )
  11. const logFileName = "test-logger.log"
  12. func createLogger(t *testing.T) *Logger {
  13. os.Remove(logFileName)
  14. l := logger.NewOutputWriter(logger.NewMockWriteManager())
  15. logger, err := NewLogger(logFileName, l, time.Millisecond, 1024)
  16. if err != nil {
  17. t.Fatal("couldn't create the logger!", err)
  18. }
  19. return logger
  20. }
  21. // AUTH-2115 TODO: fix this test
  22. //func TestWrite(t *testing.T) {
  23. // testStr := "hi"
  24. // logger := createLogger(t)
  25. // defer func() {
  26. // logger.Close()
  27. // os.Remove(logFileName)
  28. // }()
  29. //
  30. // logger.Write([]byte(testStr))
  31. // time.DelayBeforeReconnect(2 * time.Millisecond)
  32. // data, err := ioutil.ReadFile(logFileName)
  33. // if err != nil {
  34. // t.Fatal("couldn't read the log file!", err)
  35. // }
  36. // checkStr := string(data)
  37. // if checkStr != testStr {
  38. // t.Fatal("file data doesn't match!")
  39. // }
  40. //}
  41. func TestFilenameRotation(t *testing.T) {
  42. newName := rotationName("dir/bob/acoolloggername.log")
  43. dir := filepath.Dir(newName)
  44. if dir != "dir/bob" {
  45. t.Fatal("rotation name doesn't respect the directory filepath:", newName)
  46. }
  47. filename := filepath.Base(newName)
  48. if !strings.HasPrefix(filename, "acoolloggername") {
  49. t.Fatal("rotation filename is wrong:", filename)
  50. }
  51. ext := filepath.Ext(newName)
  52. if ext != ".log" {
  53. t.Fatal("rotation file extension is wrong:", ext)
  54. }
  55. }
  56. func TestRotation(t *testing.T) {
  57. logger := createLogger(t)
  58. for i := 0; i < 2000; i++ {
  59. logger.Write([]byte("a string for testing rotation\n"))
  60. }
  61. logger.Close()
  62. count := 0
  63. filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
  64. if err != nil || info.IsDir() {
  65. return nil
  66. }
  67. if strings.HasPrefix(info.Name(), "test-logger") {
  68. log.Println("deleting: ", path)
  69. os.Remove(path)
  70. count++
  71. }
  72. return nil
  73. })
  74. if count < 2 {
  75. t.Fatal("rotation didn't roll files:", count)
  76. }
  77. }