refactor: use nginx -s reload instead of systemd
- doc: add comment
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user