Show a progress bar and live log while Hammerhead, edges and sites update
The updater reports each step (checking, downloading with percent, verifying, installing, restarting). Edges and sites send that progress and their log with their reports; Hammerhead serves it to a dialog that opens when an update starts, and keeps its own last update log on disk across the restart. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9bd48917c7
commit
2b7cb5dd35
11 files changed
+306
-13
No files matched your search
@@ -5,6 +5,9 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -52,3 +55,36 @@ func TestCheckForUpdates(t *testing.T) {
|
||||
t.Errorf("unreachable server: %d %s", code, b)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelfUpdateLogSurvivesTheRestartItEndsWith(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
if err := os.WriteFile(filepath.Join(dir, "update.log"), []byte("12:00:00 Checking\n12:00:09 Installed v0.3.0; restarting into it\n"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s, err := New(dir, Options{AdminEmail: "admin@test.local", AdminPassword: "password123", MasterKey: key, Version: "v0.3.0"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer s.Close()
|
||||
do := apiClient(t, s)
|
||||
code, b := do("GET", "/api/admin/update/status", nil)
|
||||
var out struct {
|
||||
Running bool
|
||||
Stage string
|
||||
Pct int
|
||||
Lines []string
|
||||
Version string
|
||||
}
|
||||
json.Unmarshal(b, &out)
|
||||
last := ""
|
||||
if len(out.Lines) > 0 {
|
||||
last = out.Lines[len(out.Lines)-1]
|
||||
}
|
||||
if code != 200 || out.Running || out.Stage != "done" || out.Pct != 100 || len(out.Lines) != 3 || !strings.Contains(last, "now running v0.3.0") {
|
||||
t.Fatalf("status: %d %s", code, b)
|
||||
}
|
||||
// starting an update needs auto-update on
|
||||
if code, b := do("POST", "/api/admin/update/apply", nil); code != 400 || !strings.Contains(string(b), "HAMMERHEAD_AUTO_UPDATE") {
|
||||
t.Fatalf("apply without auto-update: %d %s", code, b)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user