prober: include current probe results in run-probe text response

It was a bit confusing that provided history did not include the
current probe results.

Updates tailscale/corp#20583

Signed-off-by: Anton Tolchanov <anton@tailscale.com>
This commit is contained in:
Anton Tolchanov 2025-09-06 09:28:07 +01:00 committed by Anton Tolchanov
parent a29545e9cc
commit ed6aa50bd5
2 changed files with 10 additions and 8 deletions

View File

@ -570,9 +570,9 @@ func (p *Prober) RunHandler(w http.ResponseWriter, r *http.Request) error {
return nil
}
stats := fmt.Sprintf("Last %d probes: success rate %d%%, median latency %v\n",
len(prevInfo.RecentResults),
int(prevInfo.RecentSuccessRatio()*100), prevInfo.RecentMedianLatency())
stats := fmt.Sprintf("Last %d probes (including this one): success rate %d%%, median latency %v\n",
len(info.RecentResults),
int(info.RecentSuccessRatio()*100), info.RecentMedianLatency())
if err != nil {
return tsweb.Error(respStatus, fmt.Sprintf("Probe failed: %s\n%s", err.Error(), stats), err)
}

View File

@ -12,6 +12,7 @@ import (
"net/http"
"net/http/httptest"
"net/url"
"regexp"
"strings"
"sync"
"sync/atomic"
@ -546,7 +547,7 @@ func TestProberRunHandler(t *testing.T) {
probeFunc func(context.Context) error
wantResponseCode int
wantJSONResponse RunHandlerResponse
wantPlaintextResponse string
wantPlaintextResponse *regexp.Regexp
}{
{
name: "success",
@ -561,7 +562,7 @@ func TestProberRunHandler(t *testing.T) {
},
PreviousSuccessRatio: 1,
},
wantPlaintextResponse: "Probe succeeded",
wantPlaintextResponse: regexp.MustCompile("(?s)Probe succeeded .*Last 2 probes.*success rate 100%"),
},
{
name: "failure",
@ -576,7 +577,7 @@ func TestProberRunHandler(t *testing.T) {
RecentResults: []bool{false, false},
},
},
wantPlaintextResponse: "Probe failed",
wantPlaintextResponse: regexp.MustCompile("(?s)Probe failed: .*Last 2 probes.*success rate 0%"),
},
}
@ -607,6 +608,7 @@ func TestProberRunHandler(t *testing.T) {
if err != nil {
t.Fatalf("failed to make request: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != tt.wantResponseCode {
t.Errorf("unexpected response code: got %d, want %d", resp.StatusCode, tt.wantResponseCode)
@ -630,8 +632,8 @@ func TestProberRunHandler(t *testing.T) {
}
} else {
body, _ := io.ReadAll(resp.Body)
if !strings.Contains(string(body), tt.wantPlaintextResponse) {
t.Errorf("unexpected response body: got %q, want to contain %q", body, tt.wantPlaintextResponse)
if !tt.wantPlaintextResponse.MatchString(string(body)) {
t.Errorf("unexpected response body: got %q, want to match %q", body, tt.wantPlaintextResponse)
}
}
})