init: 自 zomaintain/backend/zonat 平移独立成库; module path 改为 git.zeroonesoft.cn/golib/zonat; 内部 import 同步重写

This commit is contained in:
w11
2026-09-19 18:55:43 +08:00
commit 984041f1a0
20 changed files with 2427 additions and 0 deletions
+69
View File
@@ -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 日志")
}