code.gitea.io/gitea@v1.22.3/modules/log/event_writer_conn_test.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package log 5 6 import ( 7 "context" 8 "fmt" 9 "io" 10 "net" 11 "strings" 12 "sync" 13 "testing" 14 "time" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func listenReadAndClose(t *testing.T, l net.Listener, expected string) { 20 conn, err := l.Accept() 21 assert.NoError(t, err) 22 defer conn.Close() 23 written, err := io.ReadAll(conn) 24 25 assert.NoError(t, err) 26 assert.Equal(t, expected, string(written)) 27 } 28 29 func TestConnLogger(t *testing.T) { 30 protocol := "tcp" 31 address := ":3099" 32 33 l, err := net.Listen(protocol, address) 34 if err != nil { 35 t.Fatal(err) 36 } 37 defer l.Close() 38 39 prefix := "TestPrefix " 40 level := INFO 41 flags := LstdFlags | LUTC | Lfuncname 42 43 logger := NewLoggerWithWriters(context.Background(), "test", NewEventWriterConn("test-conn", WriterMode{ 44 Level: level, 45 Prefix: prefix, 46 Flags: FlagsFromBits(flags), 47 WriterOption: WriterConnOption{Addr: address, Protocol: protocol, Reconnect: true, ReconnectOnMsg: true}, 48 })) 49 50 location, _ := time.LoadLocation("EST") 51 52 date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) 53 54 dateString := date.UTC().Format("2006/01/02 15:04:05") 55 56 event := Event{ 57 Level: INFO, 58 MsgSimpleText: "TEST MSG", 59 Caller: "CALLER", 60 Filename: "FULL/FILENAME", 61 Line: 1, 62 Time: date, 63 } 64 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) 65 var wg sync.WaitGroup 66 wg.Add(1) 67 go func() { 68 defer wg.Done() 69 listenReadAndClose(t, l, expected) 70 }() 71 logger.SendLogEvent(&event) 72 wg.Wait() 73 74 logger.Close() 75 }