Skip to content

Commit

Permalink
Update golden files and accounting info
Browse files Browse the repository at this point in the history
The metric counts for k6 and multihttp checks is a little bit weird,
because the number of metrics emitted depends on the targets that are
included, meaning the number is not fixed.

Signed-off-by: Marcelo E. Magallon <marcelo.magallon@grafana.com>
  • Loading branch information
mem committed Jun 7, 2023
1 parent 5af34c9 commit 57ca767
Show file tree
Hide file tree
Showing 27 changed files with 626 additions and 118 deletions.
4 changes: 4 additions & 0 deletions internal/k6runner/k6runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@ func (r LocalRunner) Run(ctx context.Context, script []byte) (*RunResponse, erro

start := time.Now()

r.logger.Info().Str("command", cmd.String()).Bytes("script", script).Msg("running k6 script")

if err := cmd.Run(); err != nil {
r.logger.Error().Err(err).Str("stdout", stdout.String()).Str("stderr", stderr.String()).Msg("cannot run k6")
return nil, fmt.Errorf("cannot execute k6 script: %w", err)
Expand All @@ -364,6 +366,8 @@ func (r LocalRunner) Run(ctx context.Context, script []byte) (*RunResponse, erro
return nil, fmt.Errorf("cannot read logs: %w", err)
}

r.logger.Debug().Bytes("metrics", result.Metrics).Bytes("logs", result.Logs).Msg("k6 result")

return &result, nil
}

Expand Down
2 changes: 1 addition & 1 deletion internal/prober/multihttp/multihttp.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/rs/zerolog"
)

const proberName = "multi_http"
const proberName = "multihttp"

var errUnsupportedCheck = errors.New("unsupported check")

Expand Down
113 changes: 113 additions & 0 deletions internal/scraper/scraper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,18 @@ import (
"time"

"github.com/go-logfmt/logfmt"
"github.com/grafana/synthetic-monitoring-agent/internal/k6runner"
"github.com/grafana/synthetic-monitoring-agent/internal/pkg/logproto"
"github.com/grafana/synthetic-monitoring-agent/internal/prober"
dnsProber "github.com/grafana/synthetic-monitoring-agent/internal/prober/dns"
httpProber "github.com/grafana/synthetic-monitoring-agent/internal/prober/http"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/icmp"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/k6"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/multihttp"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/tcp"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/traceroute"
"github.com/grafana/synthetic-monitoring-agent/internal/testhelper"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/miekg/dns"
"github.com/mmcloughlin/geohash"
Expand Down Expand Up @@ -246,6 +250,97 @@ func TestValidateMetrics(t *testing.T) {
return p, check, func() {}
},
},

"k6": {
setup: func(ctx context.Context, t *testing.T) (prober.Prober, sm.Check, func()) {
httpSrv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusOK)
}))
httpSrv.Start()

check := sm.Check{
Target: httpSrv.URL,
Timeout: 2000,
Settings: sm.CheckSettings{
K6: &sm.K6Settings{
Script: []byte(`export default function() {}`),
},
},
}

var runner k6runner.Runner

if k6Path := os.Getenv("K6_PATH"); k6Path != "" {
runner = k6runner.New(k6Path)
} else {
runner = &testRunner{
metrics: testhelper.MustReadFile(t, "testdata/k6.dat"),
logs: nil,
}
}

prober, err := k6.NewProber(
ctx,
check,
zerolog.New(zerolog.NewTestWriter(t)),
runner,
)
if err != nil {
t.Fatalf("cannot create K6 prober: %s", err)
}

return prober, check, httpSrv.Close
},
},

"multihttp": {
setup: func(ctx context.Context, t *testing.T) (prober.Prober, sm.Check, func()) {
httpSrv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusOK)
}))
httpSrv.Start()

check := sm.Check{
Target: httpSrv.URL,
Timeout: 2000,
Settings: sm.CheckSettings{
Multihttp: &sm.MultiHttpSettings{
Entries: []*sm.MultiHttpEntry{
{
Request: &sm.MultiHttpEntryRequest{
Method: sm.HttpMethod_GET,
Url: httpSrv.URL,
},
},
},
},
},
}

var runner k6runner.Runner

if k6Path := os.Getenv("K6_PATH"); k6Path != "" {
runner = k6runner.New(k6Path)
} else {
runner = &testRunner{
metrics: testhelper.MustReadFile(t, "testdata/multihttp.dat"),
logs: nil,
}
}

prober, err := multihttp.NewProber(
ctx,
check,
zerolog.New(zerolog.NewTestWriter(t)),
runner,
)
if err != nil {
t.Fatalf("cannot create MultiHTTP prober: %s", err)
}

return prober, check, httpSrv.Close
},
},
}

for name, testcase := range testcases {
Expand Down Expand Up @@ -1220,3 +1315,21 @@ func TestTruncateLabelValue(t *testing.T) {
})
}
}

type testRunner struct {
metrics []byte
logs []byte
}

var _ k6runner.Runner = &testRunner{}

func (r *testRunner) Run(ctx context.Context, script []byte) (*k6runner.RunResponse, error) {
return &k6runner.RunResponse{
Metrics: r.metrics,
Logs: r.logs,
}, nil
}

func (r *testRunner) WithLogger(logger *zerolog.Logger) k6runner.Runner {
return r
}
20 changes: 10 additions & 10 deletions internal/scraper/testdata/dns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ probe_dns_answer_rrs 2
probe_dns_authority_rrs 0
# HELP probe_dns_duration_seconds Duration of DNS request by phase
# TYPE probe_dns_duration_seconds gauge
probe_dns_duration_seconds{phase="connect"} 2.1306e-05
probe_dns_duration_seconds{phase="request"} 8.6772e-05
probe_dns_duration_seconds{phase="resolve"} 2.676e-06
probe_dns_duration_seconds{phase="connect"} 2.4326e-05
probe_dns_duration_seconds{phase="request"} 0.000157755
probe_dns_duration_seconds{phase="resolve"} 3.054e-06
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 2.676e-06
probe_dns_lookup_time_seconds 3.054e-06
# HELP probe_dns_query_succeeded Displays whether or not the query was executed successfully
# TYPE probe_dns_query_succeeded gauge
probe_dns_query_succeeded 1
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.000177556
probe_duration_seconds 0.000247797
# HELP probe_ip_addr_hash Specifies the hash of IP address. It's useful to detect if the IP address changes.
# TYPE probe_ip_addr_hash gauge
probe_ip_addr_hash 1.268118805e+09
Expand All @@ -47,7 +47,7 @@ probe_all_duration_seconds_bucket{le="2.5"} 1
probe_all_duration_seconds_bucket{le="5"} 1
probe_all_duration_seconds_bucket{le="10"} 1
probe_all_duration_seconds_bucket{le="+Inf"} 1
probe_all_duration_seconds_sum 0.000177556
probe_all_duration_seconds_sum 0.000247797
probe_all_duration_seconds_count 1
# HELP probe_all_success Displays whether or not the probe was a success (summary)
# TYPE probe_all_success summary
Expand All @@ -67,7 +67,7 @@ probe_dns_all_duration_seconds_bucket{phase="connect",le="2.5"} 1
probe_dns_all_duration_seconds_bucket{phase="connect",le="5"} 1
probe_dns_all_duration_seconds_bucket{phase="connect",le="10"} 1
probe_dns_all_duration_seconds_bucket{phase="connect",le="+Inf"} 1
probe_dns_all_duration_seconds_sum{phase="connect"} 2.1306e-05
probe_dns_all_duration_seconds_sum{phase="connect"} 2.4326e-05
probe_dns_all_duration_seconds_count{phase="connect"} 1
probe_dns_all_duration_seconds_bucket{phase="request",le="0.005"} 1
probe_dns_all_duration_seconds_bucket{phase="request",le="0.01"} 1
Expand All @@ -81,7 +81,7 @@ probe_dns_all_duration_seconds_bucket{phase="request",le="2.5"} 1
probe_dns_all_duration_seconds_bucket{phase="request",le="5"} 1
probe_dns_all_duration_seconds_bucket{phase="request",le="10"} 1
probe_dns_all_duration_seconds_bucket{phase="request",le="+Inf"} 1
probe_dns_all_duration_seconds_sum{phase="request"} 8.6772e-05
probe_dns_all_duration_seconds_sum{phase="request"} 0.000157755
probe_dns_all_duration_seconds_count{phase="request"} 1
probe_dns_all_duration_seconds_bucket{phase="resolve",le="0.005"} 1
probe_dns_all_duration_seconds_bucket{phase="resolve",le="0.01"} 1
Expand All @@ -95,7 +95,7 @@ probe_dns_all_duration_seconds_bucket{phase="resolve",le="2.5"} 1
probe_dns_all_duration_seconds_bucket{phase="resolve",le="5"} 1
probe_dns_all_duration_seconds_bucket{phase="resolve",le="10"} 1
probe_dns_all_duration_seconds_bucket{phase="resolve",le="+Inf"} 1
probe_dns_all_duration_seconds_sum{phase="resolve"} 2.676e-06
probe_dns_all_duration_seconds_sum{phase="resolve"} 3.054e-06
probe_dns_all_duration_seconds_count{phase="resolve"} 1
# HELP probe_dns_lookup_all_time_seconds Returns the time taken for probe dns lookup in seconds (histogram)
# TYPE probe_dns_lookup_all_time_seconds histogram
Expand All @@ -111,5 +111,5 @@ probe_dns_lookup_all_time_seconds_bucket{le="2.5"} 1
probe_dns_lookup_all_time_seconds_bucket{le="5"} 1
probe_dns_lookup_all_time_seconds_bucket{le="10"} 1
probe_dns_lookup_all_time_seconds_bucket{le="+Inf"} 1
probe_dns_lookup_all_time_seconds_sum 2.676e-06
probe_dns_lookup_all_time_seconds_sum 3.054e-06
probe_dns_lookup_all_time_seconds_count 1
12 changes: 6 additions & 6 deletions internal/scraper/testdata/dns_basic.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ probe_dns_answer_rrs 2
probe_dns_authority_rrs 0
# HELP probe_dns_duration_seconds Duration of DNS request by phase
# TYPE probe_dns_duration_seconds gauge
probe_dns_duration_seconds{phase="connect"} 4.2812e-05
probe_dns_duration_seconds{phase="request"} 9.9917e-05
probe_dns_duration_seconds{phase="resolve"} 2.362e-06
probe_dns_duration_seconds{phase="connect"} 2.5053e-05
probe_dns_duration_seconds{phase="request"} 9.3549e-05
probe_dns_duration_seconds{phase="resolve"} 4.995e-06
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 2.362e-06
probe_dns_lookup_time_seconds 4.995e-06
# HELP probe_dns_query_succeeded Displays whether or not the query was executed successfully
# TYPE probe_dns_query_succeeded gauge
probe_dns_query_succeeded 1
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.000189389
probe_duration_seconds 0.000203654
# HELP probe_ip_addr_hash Specifies the hash of IP address. It's useful to detect if the IP address changes.
# TYPE probe_ip_addr_hash gauge
probe_ip_addr_hash 1.268118805e+09
Expand All @@ -47,7 +47,7 @@ probe_all_duration_seconds_bucket{le="2.5"} 1
probe_all_duration_seconds_bucket{le="5"} 1
probe_all_duration_seconds_bucket{le="10"} 1
probe_all_duration_seconds_bucket{le="+Inf"} 1
probe_all_duration_seconds_sum 0.000189389
probe_all_duration_seconds_sum 0.000203654
probe_all_duration_seconds_count 1
# HELP probe_all_success Displays whether or not the probe was a success (summary)
# TYPE probe_all_success summary
Expand Down
24 changes: 12 additions & 12 deletions internal/scraper/testdata/http.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 2.578e-06
probe_dns_lookup_time_seconds 2.531e-06
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.000517419
probe_duration_seconds 0.000439092
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0
Expand All @@ -12,11 +12,11 @@ probe_failed_due_to_regex 0
probe_http_content_length 0
# HELP probe_http_duration_seconds Duration of http request by phase, summed over all redirects
# TYPE probe_http_duration_seconds gauge
probe_http_duration_seconds{phase="connect"} 0.000112009
probe_http_duration_seconds{phase="processing"} 0.000206008
probe_http_duration_seconds{phase="resolve"} 2.578e-06
probe_http_duration_seconds{phase="connect"} 0.000111535
probe_http_duration_seconds{phase="processing"} 9.7178e-05
probe_http_duration_seconds{phase="resolve"} 2.531e-06
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 4.8489e-05
probe_http_duration_seconds{phase="transfer"} 3.7496e-05
# HELP probe_http_redirects The number of redirects
# TYPE probe_http_redirects gauge
probe_http_redirects 0
Expand Down Expand Up @@ -58,7 +58,7 @@ probe_all_duration_seconds_bucket{le="2.5"} 1
probe_all_duration_seconds_bucket{le="5"} 1
probe_all_duration_seconds_bucket{le="10"} 1
probe_all_duration_seconds_bucket{le="+Inf"} 1
probe_all_duration_seconds_sum 0.000517419
probe_all_duration_seconds_sum 0.000439092
probe_all_duration_seconds_count 1
# HELP probe_all_success Displays whether or not the probe was a success (summary)
# TYPE probe_all_success summary
Expand All @@ -78,7 +78,7 @@ probe_dns_lookup_all_time_seconds_bucket{le="2.5"} 1
probe_dns_lookup_all_time_seconds_bucket{le="5"} 1
probe_dns_lookup_all_time_seconds_bucket{le="10"} 1
probe_dns_lookup_all_time_seconds_bucket{le="+Inf"} 1
probe_dns_lookup_all_time_seconds_sum 2.578e-06
probe_dns_lookup_all_time_seconds_sum 2.531e-06
probe_dns_lookup_all_time_seconds_count 1
# HELP probe_http_all_duration_seconds Duration of http request by phase, summed over all redirects (histogram)
# TYPE probe_http_all_duration_seconds histogram
Expand All @@ -94,7 +94,7 @@ probe_http_all_duration_seconds_bucket{phase="connect",le="2.5"} 1
probe_http_all_duration_seconds_bucket{phase="connect",le="5"} 1
probe_http_all_duration_seconds_bucket{phase="connect",le="10"} 1
probe_http_all_duration_seconds_bucket{phase="connect",le="+Inf"} 1
probe_http_all_duration_seconds_sum{phase="connect"} 0.000112009
probe_http_all_duration_seconds_sum{phase="connect"} 0.000111535
probe_http_all_duration_seconds_count{phase="connect"} 1
probe_http_all_duration_seconds_bucket{phase="processing",le="0.005"} 1
probe_http_all_duration_seconds_bucket{phase="processing",le="0.01"} 1
Expand All @@ -108,7 +108,7 @@ probe_http_all_duration_seconds_bucket{phase="processing",le="2.5"} 1
probe_http_all_duration_seconds_bucket{phase="processing",le="5"} 1
probe_http_all_duration_seconds_bucket{phase="processing",le="10"} 1
probe_http_all_duration_seconds_bucket{phase="processing",le="+Inf"} 1
probe_http_all_duration_seconds_sum{phase="processing"} 0.000206008
probe_http_all_duration_seconds_sum{phase="processing"} 9.7178e-05
probe_http_all_duration_seconds_count{phase="processing"} 1
probe_http_all_duration_seconds_bucket{phase="resolve",le="0.005"} 1
probe_http_all_duration_seconds_bucket{phase="resolve",le="0.01"} 1
Expand All @@ -122,7 +122,7 @@ probe_http_all_duration_seconds_bucket{phase="resolve",le="2.5"} 1
probe_http_all_duration_seconds_bucket{phase="resolve",le="5"} 1
probe_http_all_duration_seconds_bucket{phase="resolve",le="10"} 1
probe_http_all_duration_seconds_bucket{phase="resolve",le="+Inf"} 1
probe_http_all_duration_seconds_sum{phase="resolve"} 2.578e-06
probe_http_all_duration_seconds_sum{phase="resolve"} 2.531e-06
probe_http_all_duration_seconds_count{phase="resolve"} 1
probe_http_all_duration_seconds_bucket{phase="tls",le="0.005"} 1
probe_http_all_duration_seconds_bucket{phase="tls",le="0.01"} 1
Expand Down Expand Up @@ -150,5 +150,5 @@ probe_http_all_duration_seconds_bucket{phase="transfer",le="2.5"} 1
probe_http_all_duration_seconds_bucket{phase="transfer",le="5"} 1
probe_http_all_duration_seconds_bucket{phase="transfer",le="10"} 1
probe_http_all_duration_seconds_bucket{phase="transfer",le="+Inf"} 1
probe_http_all_duration_seconds_sum{phase="transfer"} 4.8489e-05
probe_http_all_duration_seconds_sum{phase="transfer"} 3.7496e-05
probe_http_all_duration_seconds_count{phase="transfer"} 1
14 changes: 7 additions & 7 deletions internal/scraper/testdata/http_basic.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 2.301e-06
probe_dns_lookup_time_seconds 2.565e-06
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.000365443
probe_duration_seconds 0.000275033
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0
Expand All @@ -12,11 +12,11 @@ probe_failed_due_to_regex 0
probe_http_content_length 0
# HELP probe_http_duration_seconds Duration of http request by phase, summed over all redirects
# TYPE probe_http_duration_seconds gauge
probe_http_duration_seconds{phase="connect"} 9.1802e-05
probe_http_duration_seconds{phase="processing"} 8.3836e-05
probe_http_duration_seconds{phase="resolve"} 2.301e-06
probe_http_duration_seconds{phase="connect"} 6.0319e-05
probe_http_duration_seconds{phase="processing"} 7.4468e-05
probe_http_duration_seconds{phase="resolve"} 2.565e-06
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 9.2195e-05
probe_http_duration_seconds{phase="transfer"} 3.3071e-05
# HELP probe_http_redirects The number of redirects
# TYPE probe_http_redirects gauge
probe_http_redirects 0
Expand Down Expand Up @@ -58,7 +58,7 @@ probe_all_duration_seconds_bucket{le="2.5"} 1
probe_all_duration_seconds_bucket{le="5"} 1
probe_all_duration_seconds_bucket{le="10"} 1
probe_all_duration_seconds_bucket{le="+Inf"} 1
probe_all_duration_seconds_sum 0.000365443
probe_all_duration_seconds_sum 0.000275033
probe_all_duration_seconds_count 1
# HELP probe_all_success Displays whether or not the probe was a success (summary)
# TYPE probe_all_success summary
Expand Down

0 comments on commit 57ca767

Please sign in to comment.