mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-07 05:34:17 +00:00
92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
|
|
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))
|
||
|
|
}
|
||
|
|
}
|