refactor: use nginx -s reload instead of systemd

- doc: add comment
This commit is contained in:
2026-08-17 10:10:14 +08:00
parent 79f18fcdea
commit f536987a7e
62 changed files with 2216 additions and 598 deletions
+28 -3
View File
@@ -17,6 +17,8 @@ import (
"yms-daemon/internal/transaction"
)
// TestServerAcceptsBackendUpdateThroughUnixSocket 验证服务端能通过 Unix Socket 接收后端 ZIP 更新请求,
// 正确分派到更新器,并向客户端返回事务终态以及流式的更新进度事件。
func TestServerAcceptsBackendUpdateThroughUnixSocket(t *testing.T) {
socketPath := shortSocketPath(t)
updater := &fakeUpdater{record: transaction.Transaction{ID: "transaction-01", State: transaction.StateCommitted}}
@@ -58,6 +60,8 @@ func TestServerAcceptsBackendUpdateThroughUnixSocket(t *testing.T) {
}
}
// TestServerAcceptsDirectNativeJARThroughUnixSocket 验证服务端能接收原生后端 JAR 直接更新请求,
// 并将制品路径与输入类型正确分派到更新器。
func TestServerAcceptsDirectNativeJARThroughUnixSocket(t *testing.T) {
socketPath := shortSocketPath(t)
updater := &fakeUpdater{record: transaction.Transaction{ID: "transaction-direct-01", State: transaction.StateCommitted}}
@@ -84,6 +88,8 @@ func TestServerAcceptsDirectNativeJARThroughUnixSocket(t *testing.T) {
}
}
// TestServerAcceptsContainerImageThroughUnixSocket 验证服务端能接收容器镜像更新请求,
// 并把镜像引用作为制品路径分派到更新器。
func TestServerAcceptsContainerImageThroughUnixSocket(t *testing.T) {
socketPath := shortSocketPath(t)
updater := &fakeUpdater{record: transaction.Transaction{ID: "transaction-container-01", State: transaction.StateCommitted}}
@@ -107,6 +113,8 @@ func TestServerAcceptsContainerImageThroughUnixSocket(t *testing.T) {
}
}
// TestServerReturnsTransactionFailure 验证更新器返回错误时,服务端会在最终结果中携带事务标识、
// 回滚终态以及错误信息,客户端据此返回错误。
func TestServerReturnsTransactionFailure(t *testing.T) {
socketPath := shortSocketPath(t)
updater := &fakeUpdater{
@@ -130,6 +138,8 @@ func TestServerReturnsTransactionFailure(t *testing.T) {
}
}
// TestServerAcceptsBackendRestartThroughUnixSocket 验证服务端能接收后端重启请求,
// 并返回事务终态与流式的重启进度事件。
func TestServerAcceptsBackendRestartThroughUnixSocket(t *testing.T) {
socketPath := shortSocketPath(t)
updater := &fakeUpdater{record: transaction.Transaction{ID: "transaction-restart-01", State: transaction.StateCommitted}}
@@ -158,6 +168,8 @@ func TestServerAcceptsBackendRestartThroughUnixSocket(t *testing.T) {
}
}
// shortSocketPath 创建一个短目录并返回其下的 daemon.sock 路径,用于规避 Unix Socket 路径长度上限。
// 目录会在测试结束时自动清理。
func shortSocketPath(t *testing.T) string {
t.Helper()
directory, err := os.MkdirTemp("", "yd-")
@@ -168,6 +180,9 @@ func shortSocketPath(t *testing.T) string {
return filepath.Join(directory, "daemon.sock")
}
// waitForSocket 轮询等待 Unix Socket 文件出现,用于在测试中同步服务端就绪状态。
// 若服务端在 Socket 创建前就退出且原因为权限不足则跳过测试,否则视为失败;
// 超过 3 秒仍未见 Socket 也视为失败。
func waitForSocket(t *testing.T, socketPath string, serveResult <-chan error) {
t.Helper()
deadline := time.Now().Add(3 * time.Second)
@@ -189,14 +204,21 @@ func waitForSocket(t *testing.T, socketPath string, serveResult <-chan error) {
t.Fatalf("daemon Unix Socket was not created: %s", socketPath)
}
// fakeUpdater backendUpdater 接口的测试替身,记录被分派的参数并返回预设结果。
type fakeUpdater struct {
record transaction.Transaction
err error
file string
// record 各更新方法返回的预设事务。
record transaction.Transaction
// err 各更新方法返回的预设错误。
err error
// file 记录最近一次分派收到的制品路径或镜像引用。
file string
// inputType 记录最近一次分派收到的输入类型。
inputType string
// operation 记录最近一次分派收到的操作类型。
operation string
}
// UpdateRepack 记录分派参数并上报一条更新进度,返回预设事务与错误。
func (u *fakeUpdater) UpdateRepack(_ context.Context, file string, report backendupdate.ProgressReporter) (transaction.Transaction, error) {
u.file = file
u.inputType = daemonapi.InputTypeRepackZIP
@@ -207,6 +229,7 @@ func (u *fakeUpdater) UpdateRepack(_ context.Context, file string, report backen
return u.record, u.err
}
// UpdateNativeJAR 记录分派参数并上报一条更新进度,返回预设事务与错误。
func (u *fakeUpdater) UpdateNativeJAR(_ context.Context, file string, report backendupdate.ProgressReporter) (transaction.Transaction, error) {
u.file = file
u.inputType = daemonapi.InputTypeNativeJAR
@@ -217,6 +240,7 @@ func (u *fakeUpdater) UpdateNativeJAR(_ context.Context, file string, report bac
return u.record, u.err
}
// UpdateContainerImage 记录分派参数并上报一条更新进度,返回预设事务与错误。
func (u *fakeUpdater) UpdateContainerImage(_ context.Context, imageReference string, _ bool, report backendupdate.ProgressReporter) (transaction.Transaction, error) {
u.file = imageReference
u.inputType = daemonapi.InputTypeContainerImage
@@ -227,6 +251,7 @@ func (u *fakeUpdater) UpdateContainerImage(_ context.Context, imageReference str
return u.record, u.err
}
// Restart 记录重启操作并上报一条重启进度,返回预设事务与错误。
func (u *fakeUpdater) Restart(_ context.Context, report backendupdate.ProgressReporter) (transaction.Transaction, error) {
u.operation = daemonapi.OperationRestart
if report != nil {