3x-ui/xray/log_writer_test.go

92 lines
2.1 KiB
Go
Raw Normal View History

package xray
import (
"testing"
"github.com/mhsanaei/3x-ui/v2/logger"
"github.com/op/go-logging"
)
func init() {
// Initialize logger for tests that use LogWriter (which calls logger.Debug/Error/etc.)
logger.InitLogger(logging.DEBUG)
}
func TestNewLogWriter(t *testing.T) {
lw := NewLogWriter()
if lw == nil {
t.Fatal("NewLogWriter should not return nil")
}
}
func TestLogWriter_Write_CrashDetection(t *testing.T) {
lw := NewLogWriter()
msg := []byte("panic: runtime error: index out of range")
n, err := lw.Write(msg)
if err != nil {
t.Fatalf("Write should not return error: %v", err)
}
if n != len(msg) {
t.Errorf("Write returned %d, expected %d", n, len(msg))
}
}
func TestLogWriter_Write_FatalError(t *testing.T) {
lw := NewLogWriter()
msg := []byte("fatal error: concurrent map writes")
n, err := lw.Write(msg)
if err != nil {
t.Fatalf("Write should not return error: %v", err)
}
if n != len(msg) {
t.Errorf("Write returned %d, expected %d", n, len(msg))
}
}
func TestLogWriter_Write_Exception(t *testing.T) {
lw := NewLogWriter()
msg := []byte("unhandled exception occurred")
n, err := lw.Write(msg)
if err != nil {
t.Fatalf("Write should not return error: %v", err)
}
if n != len(msg) {
t.Errorf("Write returned %d, expected %d", n, len(msg))
}
}
func TestLogWriter_Write_EmptyMessage(t *testing.T) {
lw := NewLogWriter()
n, err := lw.Write([]byte(""))
if err != nil {
t.Fatalf("Write should not error: %v", err)
}
if n != 0 {
t.Errorf("Write returned %d, expected 0", n)
}
}
func TestLogWriter_Write_TLSErrorSuppressed(t *testing.T) {
lw := NewLogWriter()
msg := []byte("some tls handshake error occurred")
n, err := lw.Write(msg)
if err != nil {
t.Fatalf("Write should not return error: %v", err)
}
if n != len(msg) {
t.Errorf("Write returned %d, expected %d", n, len(msg))
}
}
func TestLogWriter_Write_FailedKeyword(t *testing.T) {
lw := NewLogWriter()
msg := []byte("connection failed to remote")
n, err := lw.Write(msg)
if err != nil {
t.Fatalf("Write should not return error: %v", err)
}
if n != len(msg) {
t.Errorf("Write returned %d, expected %d", n, len(msg))
}
}