gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package log
  4. import (
  5. "fmt"
  6. "io"
  7. "net"
  8. "strings"
  9. "sync"
  10. "testing"
  11. "time"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func listenReadAndClose(t *testing.T, l net.Listener, expected string) {
  15. conn, err := l.Accept()
  16. assert.NoError(t, err)
  17. defer conn.Close()
  18. written, err := io.ReadAll(conn)
  19. assert.NoError(t, err)
  20. assert.Equal(t, expected, string(written))
  21. }
  22. func TestConnLogger(t *testing.T) {
  23. protocol := "tcp"
  24. address := ":3099"
  25. l, err := net.Listen(protocol, address)
  26. if err != nil {
  27. t.Fatal(err)
  28. }
  29. defer l.Close()
  30. prefix := "TestPrefix "
  31. level := INFO
  32. flags := LstdFlags | LUTC | Lfuncname
  33. logger := NewLoggerWithWriters(t.Context(), "test", NewEventWriterConn("test-conn", WriterMode{
  34. Level: level,
  35. Prefix: prefix,
  36. Flags: FlagsFromBits(flags),
  37. WriterOption: WriterConnOption{Addr: address, Protocol: protocol, Reconnect: true, ReconnectOnMsg: true},
  38. }))
  39. location, _ := time.LoadLocation("EST")
  40. date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location)
  41. dateString := date.UTC().Format("2006/01/02 15:04:05")
  42. event := Event{
  43. Level: INFO,
  44. MsgSimpleText: "TEST MSG",
  45. Caller: "CALLER",
  46. Filename: "FULL/FILENAME",
  47. Line: 1,
  48. Time: date,
  49. }
  50. expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.Filename, event.Line, event.Caller, strings.ToUpper(event.Level.String())[0], event.MsgSimpleText)
  51. var wg sync.WaitGroup
  52. wg.Go(func() {
  53. listenReadAndClose(t, l, expected)
  54. })
  55. logger.SendLogEvent(&event)
  56. wg.Wait()
  57. logger.Close()
  58. }