mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #82957 from RainbowMango/pr_handle_stability_level_default_better
Handle stability level default better
This commit is contained in:
commit
fb1db2eba7
@ -42,6 +42,7 @@ go_test(
|
||||
"counter_test.go",
|
||||
"gauge_test.go",
|
||||
"histogram_test.go",
|
||||
"opts_test.go",
|
||||
"registry_test.go",
|
||||
"summary_test.go",
|
||||
"version_parser_test.go",
|
||||
|
@ -34,10 +34,8 @@ type Counter struct {
|
||||
// However, the object returned will not measure anything unless the collector is first
|
||||
// registered, since the metric is lazily instantiated.
|
||||
func NewCounter(opts *CounterOpts) *Counter {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
kc := &Counter{
|
||||
CounterOpts: opts,
|
||||
lazyMetric: lazyMetric{},
|
||||
@ -86,10 +84,8 @@ type CounterVec struct {
|
||||
// However, the object returned will not measure anything unless the collector is first
|
||||
// registered, since the metric is lazily instantiated.
|
||||
func NewCounterVec(opts *CounterOpts, labels []string) *CounterVec {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
cv := &CounterVec{
|
||||
CounterVec: noopCounterVec,
|
||||
CounterOpts: opts,
|
||||
|
@ -34,10 +34,8 @@ type Gauge struct {
|
||||
// However, the object returned will not measure anything unless the collector is first
|
||||
// registered, since the metric is lazily instantiated.
|
||||
func NewGauge(opts *GaugeOpts) *Gauge {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
kc := &Gauge{
|
||||
GaugeOpts: opts,
|
||||
lazyMetric: lazyMetric{},
|
||||
@ -86,10 +84,8 @@ type GaugeVec struct {
|
||||
// However, the object returned will not measure anything unless the collector is first
|
||||
// registered, since the metric is lazily instantiated.
|
||||
func NewGaugeVec(opts *GaugeOpts, labels []string) *GaugeVec {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
cv := &GaugeVec{
|
||||
GaugeVec: noopGaugeVec,
|
||||
GaugeOpts: opts,
|
||||
|
@ -46,10 +46,8 @@ type Histogram struct {
|
||||
// NewHistogram returns an object which is Histogram-like. However, nothing
|
||||
// will be measured until the histogram is registered somewhere.
|
||||
func NewHistogram(opts *HistogramOpts) *Histogram {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
h := &Histogram{
|
||||
HistogramOpts: opts,
|
||||
lazyMetric: lazyMetric{},
|
||||
@ -98,10 +96,8 @@ type HistogramVec struct {
|
||||
// prometheus.HistogramVec object. However, the object returned will not measure
|
||||
// anything unless the collector is first registered, since the metric is lazily instantiated.
|
||||
func NewHistogramVec(opts *HistogramOpts, labels []string) *HistogramVec {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
v := &HistogramVec{
|
||||
HistogramVec: noopHistogramVec,
|
||||
HistogramOpts: opts,
|
||||
|
@ -53,6 +53,16 @@ const (
|
||||
STABLE StabilityLevel = "STABLE"
|
||||
)
|
||||
|
||||
// setDefaults takes 'ALPHA' in case of empty.
|
||||
func (sl *StabilityLevel) setDefaults() {
|
||||
switch *sl {
|
||||
case "":
|
||||
*sl = ALPHA
|
||||
default:
|
||||
// no-op, since we have a StabilityLevel already
|
||||
}
|
||||
}
|
||||
|
||||
// CounterOpts is an alias for Opts. See there for doc comments.
|
||||
type CounterOpts KubeOpts
|
||||
|
||||
|
61
staging/src/k8s.io/component-base/metrics/opts_test.go
Normal file
61
staging/src/k8s.io/component-base/metrics/opts_test.go
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package metrics
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDefaultStabilityLevel(t *testing.T) {
|
||||
var tests = []struct {
|
||||
name string
|
||||
inputValue StabilityLevel
|
||||
expectValue StabilityLevel
|
||||
expectPanic bool
|
||||
}{
|
||||
{
|
||||
name: "empty should take ALPHA by default",
|
||||
inputValue: "",
|
||||
expectValue: ALPHA,
|
||||
expectPanic: false,
|
||||
},
|
||||
{
|
||||
name: "ALPHA remain unchanged",
|
||||
inputValue: ALPHA,
|
||||
expectValue: ALPHA,
|
||||
expectPanic: false,
|
||||
},
|
||||
{
|
||||
name: "STABLE remain unchanged",
|
||||
inputValue: STABLE,
|
||||
expectValue: STABLE,
|
||||
expectPanic: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
var stability = tc.inputValue
|
||||
|
||||
stability.setDefaults()
|
||||
if stability != tc.expectValue {
|
||||
t.Errorf("Got %s, expected: %v ", stability, tc.expectValue)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@ -37,10 +37,8 @@ type Summary struct {
|
||||
//
|
||||
// DEPRECATED: as per the metrics overhaul KEP
|
||||
func NewSummary(opts *SummaryOpts) *Summary {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
s := &Summary{
|
||||
SummaryOpts: opts,
|
||||
lazyMetric: lazyMetric{},
|
||||
@ -93,10 +91,8 @@ type SummaryVec struct {
|
||||
//
|
||||
// DEPRECATED: as per the metrics overhaul KEP
|
||||
func NewSummaryVec(opts *SummaryOpts, labels []string) *SummaryVec {
|
||||
// todo: handle defaulting better
|
||||
if opts.StabilityLevel == "" {
|
||||
opts.StabilityLevel = ALPHA
|
||||
}
|
||||
opts.StabilityLevel.setDefaults()
|
||||
|
||||
v := &SummaryVec{
|
||||
SummaryOpts: opts,
|
||||
originalLabels: labels,
|
||||
|
Loading…
Reference in New Issue
Block a user