B5 switchover: sing-box is the only runtime payload
- master getConfig serves singbox_config only; xray payload retired (build failure is a hard 500, agent keeps its current state) - agent: singbox_config arrival is the switch signal — flush xray tail traffic, stop xray, activate sing-box; activation failure restarts xray from the last payload and retries next poll; a legacy master (no sing-box keys) keeps the xray path untouched - sing-box log rotation: 8 MiB copy-truncate with one .1 kept, checked on the traffic cycle - install-agent.sh: xray/geo downloads and checks removed, agent binary now from the V2.0.0 release, self-check is sing-box binary + check on the live config - display version default 2.0.0 (master V2.0.0 / agent A2.0.0)
This commit is contained in:
@@ -78,7 +78,7 @@ func TestAgentUpdateSwapsAndRestarts(t *testing.T) {
|
||||
a, exe := newUpdateTestAgent(t, srv.URL)
|
||||
execCalls := stubExec(t, nil)
|
||||
|
||||
a.runUpdate(updateIntent{RequestedAt: 42, Target: "A1.0.1", Tag: "V1.0.1", BaseURL: srv.URL + "/"})
|
||||
a.runUpdate(updateIntent{RequestedAt: 42, Target: "A2.0.1", Tag: "V2.0.1", BaseURL: srv.URL + "/"})
|
||||
|
||||
got, _ := os.ReadFile(exe)
|
||||
if string(got) != "new-binary" {
|
||||
@@ -102,7 +102,7 @@ func TestAgentUpdateBadChecksumKeepsOldBinary(t *testing.T) {
|
||||
a, exe := newUpdateTestAgent(t, srv.URL)
|
||||
execCalls := stubExec(t, nil)
|
||||
|
||||
a.runUpdate(updateIntent{RequestedAt: 43, Target: "A1.0.1", Tag: "V1.0.1", BaseURL: srv.URL + "/"})
|
||||
a.runUpdate(updateIntent{RequestedAt: 43, Target: "A2.0.1", Tag: "V2.0.1", BaseURL: srv.URL + "/"})
|
||||
|
||||
got, _ := os.ReadFile(exe)
|
||||
if string(got) != "old-binary" {
|
||||
@@ -127,8 +127,8 @@ func TestAgentUpdateAlreadyCurrentSkipsDownload(t *testing.T) {
|
||||
a, exe := newUpdateTestAgent(t, srv.URL)
|
||||
stubExec(t, nil)
|
||||
|
||||
// The test binary's display version defaults to A1.0.0.
|
||||
a.runUpdate(updateIntent{RequestedAt: 44, Target: "A1.0.0", Tag: "V1.0.0", BaseURL: srv.URL + "/"})
|
||||
// The test binary's display version defaults to A2.0.0.
|
||||
a.runUpdate(updateIntent{RequestedAt: 44, Target: "A2.0.0", Tag: "V2.0.0", BaseURL: srv.URL + "/"})
|
||||
|
||||
if hits.Load() != 0 {
|
||||
t.Fatalf("release server hit %d times for an already-current agent", hits.Load())
|
||||
@@ -148,7 +148,7 @@ func TestAgentUpdateExecFailureRollsBack(t *testing.T) {
|
||||
a, exe := newUpdateTestAgent(t, srv.URL)
|
||||
stubExec(t, errExecBoom)
|
||||
|
||||
a.runUpdate(updateIntent{RequestedAt: 45, Target: "A1.0.1", Tag: "V1.0.1", BaseURL: srv.URL + "/"})
|
||||
a.runUpdate(updateIntent{RequestedAt: 45, Target: "A2.0.1", Tag: "V2.0.1", BaseURL: srv.URL + "/"})
|
||||
|
||||
got, _ := os.ReadFile(exe)
|
||||
if string(got) != "old-binary" {
|
||||
|
||||
Reference in New Issue
Block a user