本站源代码
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

155 linhas
4.0KB

  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package log
  5. import (
  6. "fmt"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func baseConsoleTest(t *testing.T, logger *Logger) (chan []byte, chan bool) {
  11. written := make(chan []byte)
  12. closed := make(chan bool)
  13. c := CallbackWriteCloser{
  14. callback: func(p []byte, close bool) {
  15. written <- p
  16. closed <- close
  17. },
  18. }
  19. m := logger.MultiChannelledLog
  20. channelledLog := m.GetEventLogger("console")
  21. assert.NotEmpty(t, channelledLog)
  22. realChanLog, ok := channelledLog.(*ChannelledLog)
  23. assert.Equal(t, true, ok)
  24. realCL, ok := realChanLog.loggerProvider.(*ConsoleLogger)
  25. assert.Equal(t, true, ok)
  26. assert.Equal(t, INFO, realCL.Level)
  27. realCL.out = c
  28. format := "test: %s"
  29. args := []interface{}{"A"}
  30. logger.Log(0, INFO, format, args...)
  31. line := <-written
  32. assert.Contains(t, string(line), fmt.Sprintf(format, args...))
  33. assert.Equal(t, false, <-closed)
  34. format = "test2: %s"
  35. logger.Warn(format, args...)
  36. line = <-written
  37. assert.Contains(t, string(line), fmt.Sprintf(format, args...))
  38. assert.Equal(t, false, <-closed)
  39. format = "testerror: %s"
  40. logger.Error(format, args...)
  41. line = <-written
  42. assert.Contains(t, string(line), fmt.Sprintf(format, args...))
  43. assert.Equal(t, false, <-closed)
  44. return written, closed
  45. }
  46. func TestNewLoggerUnexported(t *testing.T) {
  47. level := INFO
  48. logger := newLogger("UNEXPORTED", 0)
  49. err := logger.SetLogger("console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String()))
  50. assert.NoError(t, err)
  51. out := logger.MultiChannelledLog.GetEventLogger("console")
  52. assert.NotEmpty(t, out)
  53. chanlog, ok := out.(*ChannelledLog)
  54. assert.Equal(t, true, ok)
  55. assert.Equal(t, "console", chanlog.provider)
  56. assert.Equal(t, INFO, logger.GetLevel())
  57. baseConsoleTest(t, logger)
  58. }
  59. func TestNewLoggger(t *testing.T) {
  60. level := INFO
  61. logger := NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String()))
  62. assert.Equal(t, INFO, GetLevel())
  63. assert.Equal(t, false, IsTrace())
  64. assert.Equal(t, false, IsDebug())
  65. assert.Equal(t, true, IsInfo())
  66. assert.Equal(t, true, IsWarn())
  67. assert.Equal(t, true, IsError())
  68. written, closed := baseConsoleTest(t, logger)
  69. format := "test: %s"
  70. args := []interface{}{"A"}
  71. Log(0, INFO, format, args...)
  72. line := <-written
  73. assert.Contains(t, string(line), fmt.Sprintf(format, args...))
  74. assert.Equal(t, false, <-closed)
  75. Info(format, args...)
  76. line = <-written
  77. assert.Contains(t, string(line), fmt.Sprintf(format, args...))
  78. assert.Equal(t, false, <-closed)
  79. go DelLogger("console")
  80. line = <-written
  81. assert.Equal(t, "", string(line))
  82. assert.Equal(t, true, <-closed)
  83. }
  84. func TestNewLogggerRecreate(t *testing.T) {
  85. level := INFO
  86. NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String()))
  87. assert.Equal(t, INFO, GetLevel())
  88. assert.Equal(t, false, IsTrace())
  89. assert.Equal(t, false, IsDebug())
  90. assert.Equal(t, true, IsInfo())
  91. assert.Equal(t, true, IsWarn())
  92. assert.Equal(t, true, IsError())
  93. format := "test: %s"
  94. args := []interface{}{"A"}
  95. Log(0, INFO, format, args...)
  96. NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String()))
  97. assert.Equal(t, INFO, GetLevel())
  98. assert.Equal(t, false, IsTrace())
  99. assert.Equal(t, false, IsDebug())
  100. assert.Equal(t, true, IsInfo())
  101. assert.Equal(t, true, IsWarn())
  102. assert.Equal(t, true, IsError())
  103. Log(0, INFO, format, args...)
  104. assert.Panics(t, func() {
  105. NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"`, level.String()))
  106. })
  107. go DelLogger("console")
  108. // We should be able to redelete without a problem
  109. go DelLogger("console")
  110. }
  111. func TestNewNamedLogger(t *testing.T) {
  112. level := INFO
  113. err := NewNamedLogger("test", 0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String()))
  114. assert.NoError(t, err)
  115. logger, _ := NamedLoggers.Load("test")
  116. assert.Equal(t, level, logger.GetLevel())
  117. written, closed := baseConsoleTest(t, logger)
  118. go DelNamedLogger("test")
  119. line := <-written
  120. assert.Equal(t, "", string(line))
  121. assert.Equal(t, true, <-closed)
  122. }
上海开阖软件有限公司 沪ICP备12045867号-1