Our faked request wasn't good enough; improve it, adding a test. Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
+13
-5
@@ -1184,10 +1184,7 @@ func (s *service) getSupportBundle(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Metrics data as text
|
// Metrics data as text
|
||||||
var metricsBuf bytes.Buffer
|
files = append(files, fileEntry{name: "metrics.txt", data: prometheusMetrics()})
|
||||||
wr := bufferedResponseWriter{Writer: &metricsBuf}
|
|
||||||
promhttp.Handler().ServeHTTP(wr, &http.Request{Method: http.MethodGet})
|
|
||||||
files = append(files, fileEntry{name: "metrics.txt", data: metricsBuf.Bytes()})
|
|
||||||
|
|
||||||
// Connection data as JSON
|
// Connection data as JSON
|
||||||
connStats := s.model.ConnectionStats()
|
connStats := s.model.ConnectionStats()
|
||||||
@@ -1258,6 +1255,16 @@ func (s *service) getSupportBundle(w http.ResponseWriter, r *http.Request) {
|
|||||||
io.Copy(w, &zipFilesBuffer)
|
io.Copy(w, &zipFilesBuffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func prometheusMetrics() []byte {
|
||||||
|
var metricsBuf bytes.Buffer
|
||||||
|
wr := bufferedResponseWriter{Writer: &metricsBuf}
|
||||||
|
promhttp.Handler().ServeHTTP(wr, &http.Request{
|
||||||
|
Method: http.MethodGet,
|
||||||
|
URL: &url.URL{Scheme: "http://", Host: "localhost", Path: "/metrics"},
|
||||||
|
})
|
||||||
|
return metricsBuf.Bytes()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *service) getSystemDiscovery(w http.ResponseWriter, _ *http.Request) {
|
func (s *service) getSystemDiscovery(w http.ResponseWriter, _ *http.Request) {
|
||||||
devices := make(map[string]discover.CacheEntry)
|
devices := make(map[string]discover.CacheEntry)
|
||||||
|
|
||||||
@@ -1946,7 +1953,8 @@ func sanitizedHostname(name string) (string, error) {
|
|||||||
return r > unicode.MaxASCII ||
|
return r > unicode.MaxASCII ||
|
||||||
!unicode.IsLetter(r) && !unicode.IsNumber(r) &&
|
!unicode.IsLetter(r) && !unicode.IsNumber(r) &&
|
||||||
r != '.' && r != '-'
|
r != '.' && r != '-'
|
||||||
})))
|
})),
|
||||||
|
)
|
||||||
name, _, err := transform.String(t, name)
|
name, _, err := transform.String(t, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|||||||
@@ -1829,6 +1829,14 @@ func TestSanitizedHostname(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPrometheusMetrics(t *testing.T) {
|
||||||
|
// We should get some form of reasonable metrics response
|
||||||
|
bs := prometheusMetrics()
|
||||||
|
if !bytes.Contains(bs, []byte("TYPE go_info gauge")) {
|
||||||
|
t.Error("metrics should include go_info gauge")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// runningInContainer returns true if we are inside Docker or LXC. It might
|
// runningInContainer returns true if we are inside Docker or LXC. It might
|
||||||
// be prone to false negatives if things change in the future, but likely
|
// be prone to false negatives if things change in the future, but likely
|
||||||
// not false positives.
|
// not false positives.
|
||||||
|
|||||||
Reference in New Issue
Block a user