init: 自 zomaintain/backend/zonat 平移独立成库; module path 改为 git.zeroonesoft.cn/golib/zonat; 内部 import 同步重写
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
// 日志注入测试:验证 agent 包可携带宿主项目的日志实现,
|
||||
// 日志统一走注入的 Logger(嵌入到 capricorn 等项目时日志不再"各写各的")。
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.zeroonesoft.cn/golib/zonat/agent"
|
||||
)
|
||||
|
||||
// captureLogger 捕获日志的假实现(模拟宿主项目的 logger)
|
||||
type captureLogger struct {
|
||||
mu sync.Mutex
|
||||
lines []string
|
||||
}
|
||||
|
||||
func (c *captureLogger) Debugf(format string, args ...any) {}
|
||||
|
||||
func (c *captureLogger) appendf(format string, args ...any) {
|
||||
c.mu.Lock()
|
||||
c.lines = append(c.lines, fmt.Sprintf(format, args...))
|
||||
c.mu.Unlock()
|
||||
}
|
||||
|
||||
func (c *captureLogger) Infof(format string, args ...any) { c.appendf(format, args...) }
|
||||
func (c *captureLogger) Warnf(format string, args ...any) { c.appendf(format, args...) }
|
||||
func (c *captureLogger) Errorf(format string, args ...any) { c.appendf(format, args...) }
|
||||
|
||||
func (c *captureLogger) contains(sub string) bool {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
for _, l := range c.lines {
|
||||
if strings.Contains(l, sub) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func TestLoggerInjection(t *testing.T) {
|
||||
target := startEchoServer(t)
|
||||
n := startNode(t)
|
||||
|
||||
cap := &captureLogger{}
|
||||
a := agent.New("agent-log")
|
||||
a.Logger = cap
|
||||
a.Backoff = 100 * time.Millisecond
|
||||
a.PingEvery = 0
|
||||
go a.Run()
|
||||
t.Cleanup(a.Close)
|
||||
|
||||
if _, err := a.RegisterTunnel(buildTunnel(t, n, a, "log-tunnel", target, 0)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// 注入的 logger 必须收到 agent 内部日志
|
||||
deadline := time.Now().Add(2 * time.Second)
|
||||
for time.Now().Before(deadline) {
|
||||
if cap.contains("已连接节点") {
|
||||
return
|
||||
}
|
||||
time.Sleep(20 * time.Millisecond)
|
||||
}
|
||||
t.Fatal("注入的 logger 未收到 agent 日志")
|
||||
}
|
||||
Reference in New Issue
Block a user