From 28b607eb5f9043d51a4d176a880a34adafab0742 Mon Sep 17 00:00:00 2001 From: William Banfield Date: Mon, 9 May 2022 18:22:22 -0400 Subject: [PATCH] codegen testdata metrics --- Makefile | 11 +++- .../metricsgen/testdata/basic/metrics.gen.go | 30 +++++++++++ scripts/metricsgen/testdata/basic/metrics.go | 2 + .../testdata/commented/metrics.gen.go | 30 +++++++++++ .../metricsgen/testdata/commented/metrics.go | 2 + .../metricsgen/testdata/tags/metrics.gen.go | 51 +++++++++++++++++++ scripts/metricsgen/testdata/tags/metrics.go | 2 + 7 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 scripts/metricsgen/testdata/basic/metrics.gen.go create mode 100644 scripts/metricsgen/testdata/commented/metrics.gen.go create mode 100644 scripts/metricsgen/testdata/tags/metrics.gen.go diff --git a/Makefile b/Makefile index d35af16c4..67df8d6c1 100644 --- a/Makefile +++ b/Makefile @@ -255,10 +255,17 @@ mockery: ### Metrics ### ############################################################################### -metrics: - go generate -run="go run github.com/tendermint/tendermint/scripts/metricsgen" ./... +metrics: testdata-metrics + go generate -v -run="scripts/metricsgen" ./... .PHONY: metrics + # By convention, the go tool ignores subdirectories of directories named + # 'testdata'. This command invokes the generate command on the folder directly + # to avoid this. +testdata-metrics: + ls ./scripts/metricsgen/testdata | xargs -I{} go generate -v -run="scripts/metricsgen" ./scripts/metricsgen/testdata/{} +.PHONY: testdata-metrics + ############################################################################### ### Local testnet using docker ### ############################################################################### diff --git a/scripts/metricsgen/testdata/basic/metrics.gen.go b/scripts/metricsgen/testdata/basic/metrics.gen.go new file mode 100644 index 000000000..d541cb2db --- /dev/null +++ b/scripts/metricsgen/testdata/basic/metrics.gen.go @@ -0,0 +1,30 @@ +// Code generated by metricsgen. DO NOT EDIT. + +package basic + +import ( + "github.com/go-kit/kit/metrics/discard" + prometheus "github.com/go-kit/kit/metrics/prometheus" + stdprometheus "github.com/prometheus/client_golang/prometheus" +) + +func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { + labels := []string{} + for i := 0; i < len(labelsAndValues); i += 2 { + labels = append(labels, labelsAndValues[i]) + } + return &Metrics{ + Height: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "height", + Help: "simple metric that tracks the height of the chain.", + }, labels).With(labelsAndValues...), + } +} + +func NopMetrics() *Metrics { + return &Metrics{ + Height: discard.NewGauge(), + } +} diff --git a/scripts/metricsgen/testdata/basic/metrics.go b/scripts/metricsgen/testdata/basic/metrics.go index ae5be16fd..1a361f90f 100644 --- a/scripts/metricsgen/testdata/basic/metrics.go +++ b/scripts/metricsgen/testdata/basic/metrics.go @@ -2,6 +2,8 @@ package basic import "github.com/go-kit/kit/metrics" +//go:generate go run ../../../../scripts/metricsgen -struct=Metrics + // Metrics contains metrics exposed by this package. type Metrics struct { // simple metric that tracks the height of the chain. diff --git a/scripts/metricsgen/testdata/commented/metrics.gen.go b/scripts/metricsgen/testdata/commented/metrics.gen.go new file mode 100644 index 000000000..038da3d46 --- /dev/null +++ b/scripts/metricsgen/testdata/commented/metrics.gen.go @@ -0,0 +1,30 @@ +// Code generated by metricsgen. DO NOT EDIT. + +package commented + +import ( + "github.com/go-kit/kit/metrics/discard" + prometheus "github.com/go-kit/kit/metrics/prometheus" + stdprometheus "github.com/prometheus/client_golang/prometheus" +) + +func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { + labels := []string{} + for i := 0; i < len(labelsAndValues); i += 2 { + labels = append(labels, labelsAndValues[i]) + } + return &Metrics{ + Field: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "field", + Help: "Height of the chain.We expect multi-line comments to parse correctly.", + }, labels).With(labelsAndValues...), + } +} + +func NopMetrics() *Metrics { + return &Metrics{ + Field: discard.NewGauge(), + } +} diff --git a/scripts/metricsgen/testdata/commented/metrics.go b/scripts/metricsgen/testdata/commented/metrics.go index e6233748f..174f1e233 100644 --- a/scripts/metricsgen/testdata/commented/metrics.go +++ b/scripts/metricsgen/testdata/commented/metrics.go @@ -2,6 +2,8 @@ package commented import "github.com/go-kit/kit/metrics" +//go:generate go run ../../../../scripts/metricsgen -struct=Metrics + type Metrics struct { // Height of the chain. // We expect multi-line comments to parse correctly. diff --git a/scripts/metricsgen/testdata/tags/metrics.gen.go b/scripts/metricsgen/testdata/tags/metrics.gen.go new file mode 100644 index 000000000..2ff7dd4af --- /dev/null +++ b/scripts/metricsgen/testdata/tags/metrics.gen.go @@ -0,0 +1,51 @@ +// Code generated by metricsgen. DO NOT EDIT. + +package tags + +import ( + "github.com/go-kit/kit/metrics/discard" + prometheus "github.com/go-kit/kit/metrics/prometheus" + stdprometheus "github.com/prometheus/client_golang/prometheus" +) + +func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { + labels := []string{} + for i := 0; i < len(labelsAndValues); i += 2 { + labels = append(labels, labelsAndValues[i]) + } + return &Metrics{ + WithLabels: prometheus.NewCounterFrom(stdprometheus.CounterOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "with_labels", + Help: "", + }, labels).With(labelsAndValues...), + WithExpBuckets: prometheus.NewHistogramFrom(stdprometheus.HistogramOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "with_exp_buckets", + Help: "", + }, labels).With(labelsAndValues...), + WithBuckets: prometheus.NewHistogramFrom(stdprometheus.HistogramOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "with_buckets", + Help: "", + }, labels).With(labelsAndValues...), + Named: prometheus.NewCounterFrom(stdprometheus.CounterOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "named", + Help: "", + }, labels).With(labelsAndValues...), + } +} + +func NopMetrics() *Metrics { + return &Metrics{ + WithLabels: discard.NewCounter(), + WithExpBuckets: discard.NewHistogram(), + WithBuckets: discard.NewHistogram(), + Named: discard.NewCounter(), + } +} diff --git a/scripts/metricsgen/testdata/tags/metrics.go b/scripts/metricsgen/testdata/tags/metrics.go index 968e9c0bc..7f03a54c6 100644 --- a/scripts/metricsgen/testdata/tags/metrics.go +++ b/scripts/metricsgen/testdata/tags/metrics.go @@ -2,6 +2,8 @@ package tags import "github.com/go-kit/kit/metrics" +//go:generate go run ../../../../scripts/metricsgen -struct=Metrics + type Metrics struct { WithLabels metrics.Counter `metricsgen_labels:"step,time"` WithExpBuckets metrics.Histogram `metricsgen_bucketsType:"exp" metricsgen_bucketSizes:".1,100,8"`