change deprecatedVersion type to string for static analysis parsing ease

This commit is contained in:
Han Kang 2019-08-13 18:00:03 -07:00
parent 125fb72850
commit 11f2b6c44b
12 changed files with 40 additions and 48 deletions

View File

@ -55,7 +55,7 @@ func (c *Counter) setPrometheusCounter(counter prometheus.Counter) {
// DeprecatedVersion returns a pointer to the Version or nil
func (c *Counter) DeprecatedVersion() *semver.Version {
return c.CounterOpts.DeprecatedVersion
return parseSemver(c.CounterOpts.DeprecatedVersion)
}
// initializeMetric invocation creates the actual underlying Counter. Until this method is called
@ -102,7 +102,8 @@ func NewCounterVec(opts *CounterOpts, labels []string) *CounterVec {
// DeprecatedVersion returns a pointer to the Version or nil
func (v *CounterVec) DeprecatedVersion() *semver.Version {
return v.CounterOpts.DeprecatedVersion
return parseSemver(v.CounterOpts.DeprecatedVersion)
}
// initializeMetric invocation creates the actual underlying CounterVec. Until this method is called

View File

@ -25,8 +25,6 @@ import (
)
func TestCounter(t *testing.T) {
v114 := semver.MustParse("1.14.0")
v115 := semver.MustParse("1.15.0")
var tests = []struct {
desc string
*CounterOpts
@ -53,7 +51,7 @@ func TestCounter(t *testing.T) {
Subsystem: "subsystem",
Help: "counter help",
StabilityLevel: ALPHA,
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
expectedMetricCount: 1,
expectedHelp: "[ALPHA] (Deprecated since 1.15.0) counter help",
@ -66,7 +64,7 @@ func TestCounter(t *testing.T) {
Subsystem: "subsystem",
Help: "counter help",
StabilityLevel: ALPHA,
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
expectedMetricCount: 0,
},
@ -123,8 +121,6 @@ func TestCounter(t *testing.T) {
}
func TestCounterVec(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
*CounterOpts
@ -152,7 +148,7 @@ func TestCounterVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "counter help",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
labels: []string{"label_a", "label_b"},
expectedMetricFamilyCount: 1,
@ -165,7 +161,7 @@ func TestCounterVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "counter help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
labels: []string{"label_a", "label_b"},
expectedMetricFamilyCount: 0,

View File

@ -55,7 +55,7 @@ func (g *Gauge) setPrometheusGauge(gauge prometheus.Gauge) {
// DeprecatedVersion returns a pointer to the Version or nil
func (g *Gauge) DeprecatedVersion() *semver.Version {
return g.GaugeOpts.DeprecatedVersion
return parseSemver(g.GaugeOpts.DeprecatedVersion)
}
// initializeMetric invocation creates the actual underlying Gauge. Until this method is called
@ -102,7 +102,7 @@ func NewGaugeVec(opts *GaugeOpts, labels []string) *GaugeVec {
// DeprecatedVersion returns a pointer to the Version or nil
func (v *GaugeVec) DeprecatedVersion() *semver.Version {
return v.GaugeOpts.DeprecatedVersion
return parseSemver(v.GaugeOpts.DeprecatedVersion)
}
// initializeMetric invocation creates the actual underlying GaugeVec. Until this method is called

View File

@ -24,7 +24,6 @@ import (
func TestGauge(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
GaugeOpts
@ -51,7 +50,7 @@ func TestGauge(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "gauge help",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
registryVersion: &v115,
expectedMetricCount: 1,
@ -64,7 +63,7 @@ func TestGauge(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "gauge help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
registryVersion: &v115,
expectedMetricCount: 0,
@ -117,7 +116,6 @@ func TestGauge(t *testing.T) {
func TestGaugeVec(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
GaugeOpts
@ -146,7 +144,7 @@ func TestGaugeVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "gauge help",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
labels: []string{"label_a", "label_b"},
registryVersion: &v115,
@ -160,7 +158,7 @@ func TestGaugeVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "gauge help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
labels: []string{"label_a", "label_b"},
registryVersion: &v115,

View File

@ -19,7 +19,6 @@ package metrics
import (
"github.com/blang/semver"
"github.com/prometheus/client_golang/prometheus"
"k8s.io/klog"
)
// Histogram is our internal representation for our wrapping struct around prometheus
@ -55,7 +54,7 @@ func (h *Histogram) setPrometheusHistogram(histogram prometheus.Histogram) {
// DeprecatedVersion returns a pointer to the Version or nil
func (h *Histogram) DeprecatedVersion() *semver.Version {
return h.HistogramOpts.DeprecatedVersion
return parseSemver(h.HistogramOpts.DeprecatedVersion)
}
// initializeMetric invokes the actual prometheus.Histogram object instantiation
@ -87,11 +86,9 @@ type HistogramVec struct {
// anything unless the collector is first registered, since the metric is lazily instantiated.
func NewHistogramVec(opts *HistogramOpts, labels []string) *HistogramVec {
// todo: handle defaulting better
klog.Errorf("---%v---\n", opts)
if opts.StabilityLevel == "" {
opts.StabilityLevel = ALPHA
}
klog.Errorf("---%v---\n", opts)
v := &HistogramVec{
HistogramVec: noopHistogramVec,
HistogramOpts: opts,
@ -104,7 +101,7 @@ func NewHistogramVec(opts *HistogramOpts, labels []string) *HistogramVec {
// DeprecatedVersion returns a pointer to the Version or nil
func (v *HistogramVec) DeprecatedVersion() *semver.Version {
return v.HistogramOpts.DeprecatedVersion
return parseSemver(v.HistogramOpts.DeprecatedVersion)
}
func (v *HistogramVec) initializeMetric() {

View File

@ -25,7 +25,6 @@ import (
func TestHistogram(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
HistogramOpts
@ -53,7 +52,7 @@ func TestHistogram(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "histogram help message",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
Buckets: prometheus.DefBuckets,
},
registryVersion: &v115,
@ -67,7 +66,7 @@ func TestHistogram(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "histogram help message",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
Buckets: prometheus.DefBuckets,
},
registryVersion: &v115,
@ -122,7 +121,6 @@ func TestHistogram(t *testing.T) {
func TestHistogramVec(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
HistogramOpts
@ -152,7 +150,7 @@ func TestHistogramVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "histogram help message",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
Buckets: prometheus.DefBuckets,
},
labels: []string{"label_a", "label_b"},
@ -167,7 +165,7 @@ func TestHistogramVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "histogram help message",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
Buckets: prometheus.DefBuckets,
},
labels: []string{"label_a", "label_b"},

View File

@ -35,8 +35,6 @@ func init() {
}
var (
v115 = semver.MustParse("1.15.0")
v114 = semver.MustParse("1.14.0")
alphaCounter = metrics.NewCounter(
&metrics.CounterOpts{
Namespace: "some_namespace",
@ -53,7 +51,7 @@ var (
Subsystem: "subsystem",
StabilityLevel: metrics.ALPHA,
Help: "counter help",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
)
alphaHiddenCounter = metrics.NewCounter(
@ -63,7 +61,7 @@ var (
Subsystem: "subsystem",
StabilityLevel: metrics.ALPHA,
Help: "counter help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
)
)

View File

@ -18,7 +18,6 @@ package metrics
import (
"fmt"
"github.com/blang/semver"
"github.com/prometheus/client_golang/prometheus"
"sync"
"time"
@ -36,7 +35,7 @@ type KubeOpts struct {
Name string
Help string
ConstLabels prometheus.Labels
DeprecatedVersion *semver.Version
DeprecatedVersion string
deprecateOnce sync.Once
annotateOnce sync.Once
StabilityLevel StabilityLevel
@ -125,7 +124,7 @@ type HistogramOpts struct {
Help string
ConstLabels prometheus.Labels
Buckets []float64
DeprecatedVersion *semver.Version
DeprecatedVersion string
deprecateOnce sync.Once
annotateOnce sync.Once
StabilityLevel StabilityLevel
@ -174,7 +173,7 @@ type SummaryOpts struct {
MaxAge time.Duration
AgeBuckets uint32
BufCap uint32
DeprecatedVersion *semver.Version
DeprecatedVersion string
deprecateOnce sync.Once
annotateOnce sync.Once
StabilityLevel StabilityLevel

View File

@ -44,7 +44,7 @@ var (
Subsystem: "subsystem",
StabilityLevel: ALPHA,
Help: "counter help",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
)
alphaHiddenCounter = NewCounter(
@ -54,7 +54,7 @@ var (
Subsystem: "subsystem",
StabilityLevel: ALPHA,
Help: "counter help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
)
)
@ -221,7 +221,7 @@ func TestShowHiddenMetric(t *testing.T) {
Subsystem: "subsystem",
StabilityLevel: ALPHA,
Help: "counter help",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
))
expectedMetricCount = 1

View File

@ -58,7 +58,7 @@ func (s *Summary) setPrometheusSummary(summary prometheus.Summary) {
// DeprecatedVersion returns a pointer to the Version or nil
func (s *Summary) DeprecatedVersion() *semver.Version {
return s.SummaryOpts.DeprecatedVersion
return parseSemver(s.SummaryOpts.DeprecatedVersion)
}
// initializeMetric invokes the actual prometheus.Summary object instantiation
@ -108,7 +108,7 @@ func NewSummaryVec(opts *SummaryOpts, labels []string) *SummaryVec {
// DeprecatedVersion returns a pointer to the Version or nil
func (v *SummaryVec) DeprecatedVersion() *semver.Version {
return v.SummaryOpts.DeprecatedVersion
return parseSemver(v.SummaryOpts.DeprecatedVersion)
}
func (v *SummaryVec) initializeMetric() {

View File

@ -24,7 +24,6 @@ import (
func TestSummary(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
SummaryOpts
@ -52,7 +51,7 @@ func TestSummary(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "summary help message",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
StabilityLevel: ALPHA,
},
registryVersion: &v115,
@ -66,7 +65,7 @@ func TestSummary(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "summary help message",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
registryVersion: &v115,
expectedMetricCount: 0,
@ -120,7 +119,6 @@ func TestSummary(t *testing.T) {
func TestSummaryVec(t *testing.T) {
v115 := semver.MustParse("1.15.0")
v114 := semver.MustParse("1.14.0")
var tests = []struct {
desc string
SummaryOpts
@ -149,7 +147,7 @@ func TestSummaryVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "summary help message",
DeprecatedVersion: &v115,
DeprecatedVersion: "1.15.0",
},
labels: []string{"label_a", "label_b"},
registryVersion: &v115,
@ -163,7 +161,7 @@ func TestSummaryVec(t *testing.T) {
Name: "metric_test_name",
Subsystem: "subsystem",
Help: "summary help message",
DeprecatedVersion: &v114,
DeprecatedVersion: "1.14.0",
},
labels: []string{"label_a", "label_b"},
registryVersion: &v115,

View File

@ -31,6 +31,13 @@ var (
versionRe = regexp.MustCompile(versionRegexpString)
)
func parseSemver(s string) *semver.Version {
if s != "" {
sv := semver.MustParse(s)
return &sv
}
return nil
}
func parseVersion(ver apimachineryversion.Info) semver.Version {
matches := versionRe.FindAllStringSubmatch(ver.String(), -1)