From 12ba9c21547f0ea81d8ca844847dd4d25fdb1a83 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Thu, 10 Apr 2025 15:22:58 +0200 Subject: syz-cluster/dashboard: share test step artifacts If the test artifacts are present, let the user download them. --- syz-cluster/dashboard/handler.go | 16 +++++++++++++++- syz-cluster/dashboard/templates/series.html | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/syz-cluster/dashboard/handler.go b/syz-cluster/dashboard/handler.go index fe9129373..c18436978 100644 --- a/syz-cluster/dashboard/handler.go +++ b/syz-cluster/dashboard/handler.go @@ -58,6 +58,7 @@ func (h *dashboardHandler) Mux() *http.ServeMux { mux := http.NewServeMux() mux.HandleFunc("/sessions/{id}/log", errToStatus(h.sessionLog)) mux.HandleFunc("/sessions/{id}/test_logs", errToStatus(h.sessionTestLog)) + mux.HandleFunc("/sessions/{id}/test_artifacts", errToStatus(h.sessionTestArtifacts)) mux.HandleFunc("/series/{id}", errToStatus(h.seriesInfo)) mux.HandleFunc("/patches/{id}", errToStatus(h.patchContent)) mux.HandleFunc("/findings/{id}/{key}", errToStatus(h.findingInfo)) @@ -254,11 +255,24 @@ func (h *dashboardHandler) sessionTestLog(w http.ResponseWriter, r *http.Request if err != nil { return err } else if test == nil { - return fmt.Errorf("%w: test log", errNotFound) + return fmt.Errorf("%w: test", errNotFound) } return h.streamBlob(w, test.LogURI) } +func (h *dashboardHandler) sessionTestArtifacts(w http.ResponseWriter, r *http.Request) error { + test, err := h.sessionTestRepo.Get(r.Context(), r.PathValue("id"), r.FormValue("name")) + if err != nil { + return err + } else if test == nil { + return fmt.Errorf("%w: test", errNotFound) + } + filename := fmt.Sprintf("%s_%s.tar.gz", test.SessionID, test.TestName) + w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filename)) + w.Header().Set("Content-Type", "application/octet-stream") + return h.streamBlob(w, test.ArtifactsArchiveURI) +} + func (h *dashboardHandler) streamBlob(w http.ResponseWriter, uri string) error { if uri == "" { return nil diff --git a/syz-cluster/dashboard/templates/series.html b/syz-cluster/dashboard/templates/series.html index daaad8ae8..754bfe9e2 100644 --- a/syz-cluster/dashboard/templates/series.html +++ b/syz-cluster/dashboard/templates/series.html @@ -130,6 +130,9 @@ {{if .LogURI}} [Log] {{end}} + {{if .ArtifactsArchiveURI}} + [Artifacts] + {{end}} {{if .Findings}} -- cgit mrf-deployment