diff --git a/internal/log/syslog_test.go b/internal/log/syslog_test.go index 7432e61b3..391d5b49b 100644 --- a/internal/log/syslog_test.go +++ b/internal/log/syslog_test.go @@ -19,12 +19,9 @@ import ( "fmt" - "os" - "path" "regexp" "testing" - "github.com/google/uuid" "github.com/stretchr/testify/suite" "github.com/superseriousbusiness/gotosocial/internal/config" "github.com/superseriousbusiness/gotosocial/internal/log" @@ -98,42 +95,6 @@ funcName := log.Caller(2) suite.Regexp(regexp.MustCompile(regex), entry["content"]) } -func (suite *SyslogTestSuite) TestSyslogLongMessageUnixgram() { - socketPath := path.Join(os.TempDir(), uuid.NewString()) - defer func() { - if err := os.Remove(socketPath); err != nil { - panic(err) - } - }() - - server, channel, err := testrig.InitTestSyslogUnixgram(socketPath) - if err != nil { - panic(err) - } - syslogServer := server - syslogChannel := channel - - config.SetSyslogEnabled(true) - config.SetSyslogProtocol("unixgram") - config.SetSyslogAddress(socketPath) - - testrig.InitTestLog() - - log.Warn(nil, longMessage) - - funcName := log.Caller(2) - prefix := fmt.Sprintf(`timestamp="02/01/2006 15:04:05.000" func=%s level=WARN msg="`, funcName) - - entry := <-syslogChannel - regex := fmt.Sprintf(`timestamp=.* func=.* level=WARN msg="%s`, longMessage[:2048-len(prefix)]) - - suite.Regexp(regexp.MustCompile(regex), entry["content"]) - - if err := syslogServer.Kill(); err != nil { - panic(err) - } -} - func TestSyslogTestSuite(t *testing.T) { suite.Run(t, &SyslogTestSuite{}) } diff --git a/internal/log/sysloglongunixgram_test.go b/internal/log/sysloglongunixgram_test.go new file mode 100644 index 000000000..11aecfd14 --- /dev/null +++ b/internal/log/sysloglongunixgram_test.go @@ -0,0 +1,69 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +//go:build !darwin + +package log_test + +import ( + "fmt" + "os" + "path" + "regexp" + + "github.com/google/uuid" + "github.com/superseriousbusiness/gotosocial/internal/config" + "github.com/superseriousbusiness/gotosocial/internal/log" + "github.com/superseriousbusiness/gotosocial/testrig" +) + +// TestSyslogLongMessageUnixgram is known to hang on macOS for messages longer than about 1500 bytes. +func (suite *SyslogTestSuite) TestSyslogLongMessageUnixgram() { + socketPath := path.Join(os.TempDir(), uuid.NewString()) + defer func() { + if err := os.Remove(socketPath); err != nil { + panic(err) + } + }() + + server, channel, err := testrig.InitTestSyslogUnixgram(socketPath) + if err != nil { + panic(err) + } + syslogServer := server + syslogChannel := channel + + config.SetSyslogEnabled(true) + config.SetSyslogProtocol("unixgram") + config.SetSyslogAddress(socketPath) + + testrig.InitTestLog() + + log.Warn(nil, longMessage) + + funcName := log.Caller(2) + prefix := fmt.Sprintf(`timestamp="02/01/2006 15:04:05.000" func=%s level=WARN msg="`, funcName) + + entry := <-syslogChannel + regex := fmt.Sprintf(`timestamp=.* func=.* level=WARN msg="%s`, longMessage[:2048-len(prefix)]) + + suite.Regexp(regexp.MustCompile(regex), entry["content"]) + + if err := syslogServer.Kill(); err != nil { + panic(err) + } +}