mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-10 03:31:20 +00:00
1b5b8a57e0
* Update io_kubernetes_build commit hash to 1246899 * Update dependency build_bazel_rules_nodejs to v0.33.1 * Update dependency com_github_hashicorp_golang_lru to v0.5.1 * Update libp2p * Update io_bazel_rules_k8s commit hash to e68d5d7 * Starting to remove old protos * Bazel build proto passes * Fixing pb version * Cleaned up core package * Fixing tests * 6 tests failing * Update proto bugs * Fixed incorrect validator ordering proto * Sync with master * Update go-ssz commit * Removed bad copies from v1alpha1 folder * add json spec json to pb handler * add nested proto example * proto/testing test works * fix refactoring build failures * use merged ssz * push latest changes * used forked json encoding * used forked json encoding * fix warning * fix build issues * fix test and lint * fix build * lint
68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package metric
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
|
|
"github.com/prysmaticlabs/prysm/shared/p2p"
|
|
"github.com/prysmaticlabs/prysm/shared/prometheus"
|
|
)
|
|
|
|
const addr = "127.0.0.1:8989"
|
|
|
|
func TestMessageMetrics_OK(t *testing.T) {
|
|
service := prometheus.NewPrometheusService(addr, nil)
|
|
go service.Start()
|
|
defer service.Stop()
|
|
|
|
adapter := New()
|
|
if adapter == nil {
|
|
t.Error("Expected metric adapter")
|
|
}
|
|
data := ðpb.Attestation{
|
|
AggregationBits: []byte{99},
|
|
Data: ðpb.AttestationData{
|
|
Crosslink: ðpb.Crosslink{
|
|
Shard: 0,
|
|
},
|
|
},
|
|
}
|
|
h := adapter(func(p2p.Message) { time.Sleep(10 * time.Millisecond) })
|
|
h(p2p.Message{Ctx: context.Background(), Data: data})
|
|
h = adapter(func(p2p.Message) { time.Sleep(100 * time.Microsecond) })
|
|
h(p2p.Message{Ctx: context.Background(), Data: data})
|
|
|
|
metrics := getMetrics(t)
|
|
testMetricExists(t, metrics, fmt.Sprintf("p2p_message_sent_total{message=\"%T\"} 2", data))
|
|
testMetricExists(t, metrics, fmt.Sprintf("p2p_message_sent_latency_seconds_bucket{message=\"%T\",le=\"0.005\"} 1", data))
|
|
testMetricExists(t, metrics, fmt.Sprintf("p2p_message_sent_latency_seconds_bucket{message=\"%T\",le=\"0.01\"} 1", data))
|
|
}
|
|
|
|
func getMetrics(t *testing.T) []string {
|
|
resp, err := http.Get(fmt.Sprintf("http://%s/metrics", addr))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
return strings.Split(string(body), "\n")
|
|
}
|
|
|
|
func testMetricExists(t *testing.T, metrics []string, pattern string) string {
|
|
for _, line := range metrics {
|
|
if strings.HasPrefix(line, pattern) {
|
|
return line
|
|
}
|
|
}
|
|
t.Errorf("Pattern \"%s\" not found in metrics", pattern)
|
|
return ""
|
|
}
|