Skip to content

Commit c4ea7a5

Browse files
authored
Merge branch 'main' into constNativeHistogram
2 parents f900abb + 0c73c1c commit c4ea7a5

File tree

5 files changed

+54
-46
lines changed

5 files changed

+54
-46
lines changed

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ require (
77
github.com/cespare/xxhash/v2 v2.3.0
88
github.com/google/go-cmp v0.6.0
99
github.com/json-iterator/go v1.1.12
10-
github.com/klauspost/compress v1.17.10
10+
github.com/klauspost/compress v1.17.11
1111
github.com/kylelemons/godebug v1.1.0
1212
github.com/prometheus/client_model v0.6.1
13-
github.com/prometheus/common v0.59.1
13+
github.com/prometheus/common v0.60.1
1414
github.com/prometheus/procfs v0.15.1
15-
golang.org/x/sys v0.25.0
16-
google.golang.org/protobuf v1.34.2
15+
golang.org/x/sys v0.26.0
16+
google.golang.org/protobuf v1.35.1
1717
)
1818

1919
require (
@@ -23,9 +23,9 @@ require (
2323
github.com/modern-go/reflect2 v1.0.2 // indirect
2424
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
2525
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
26-
golang.org/x/net v0.28.0 // indirect
27-
golang.org/x/oauth2 v0.22.0 // indirect
28-
golang.org/x/text v0.17.0 // indirect
26+
golang.org/x/net v0.29.0 // indirect
27+
golang.org/x/oauth2 v0.23.0 // indirect
28+
golang.org/x/text v0.18.0 // indirect
2929
gopkg.in/yaml.v2 v2.4.0 // indirect
3030
)
3131

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2E
1313
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
1414
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
1515
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
16-
github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0=
17-
github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
16+
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
17+
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
1818
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
1919
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
2020
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -35,8 +35,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
3535
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3636
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
3737
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
38-
github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0=
39-
github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0=
38+
github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
39+
github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
4040
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
4141
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
4242
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
@@ -46,16 +46,16 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
4646
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
4747
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
4848
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
49-
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
50-
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
51-
golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
52-
golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
53-
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
54-
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
55-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
56-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
57-
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
58-
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
49+
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
50+
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
51+
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
52+
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
53+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
54+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
55+
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
56+
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
57+
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
58+
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
5959
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
6060
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
6161
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

prometheus/metric.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,23 @@ func BuildFQName(namespace, subsystem, name string) string {
108108
if name == "" {
109109
return ""
110110
}
111-
switch {
112-
case namespace != "" && subsystem != "":
113-
return strings.Join([]string{namespace, subsystem, name}, "_")
114-
case namespace != "":
115-
return strings.Join([]string{namespace, name}, "_")
116-
case subsystem != "":
117-
return strings.Join([]string{subsystem, name}, "_")
111+
112+
sb := strings.Builder{}
113+
sb.Grow(len(namespace) + len(subsystem) + len(name) + 2)
114+
115+
if namespace != "" {
116+
sb.WriteString(namespace)
117+
sb.WriteString("_")
118118
}
119-
return name
119+
120+
if subsystem != "" {
121+
sb.WriteString(subsystem)
122+
sb.WriteString("_")
123+
}
124+
125+
sb.WriteString(name)
126+
127+
return sb.String()
120128
}
121129

122130
type invalidMetric struct {

prometheus/summary.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
243243

244244
s := &summary{
245245
desc: desc,
246+
now: opts.now,
246247

247248
objectives: opts.Objectives,
248249
sortedObjectives: make([]float64, 0, len(opts.Objectives)),
@@ -280,6 +281,8 @@ type summary struct {
280281

281282
desc *Desc
282283

284+
now func() time.Time
285+
283286
objectives map[float64]float64
284287
sortedObjectives []float64
285288

@@ -307,7 +310,7 @@ func (s *summary) Observe(v float64) {
307310
s.bufMtx.Lock()
308311
defer s.bufMtx.Unlock()
309312

310-
now := time.Now()
313+
now := s.now()
311314
if now.After(s.hotBufExpTime) {
312315
s.asyncFlush(now)
313316
}
@@ -326,7 +329,7 @@ func (s *summary) Write(out *dto.Metric) error {
326329
s.bufMtx.Lock()
327330
s.mtx.Lock()
328331
// Swap bufs even if hotBuf is empty to set new hotBufExpTime.
329-
s.swapBufs(time.Now())
332+
s.swapBufs(s.now())
330333
s.bufMtx.Unlock()
331334

332335
s.flushColdBuf()

prometheus/summary_test.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -371,39 +371,36 @@ func TestSummaryVecConcurrency(t *testing.T) {
371371
}
372372

373373
func TestSummaryDecay(t *testing.T) {
374-
if testing.Short() {
375-
t.Skip("Skipping test in short mode.")
376-
// More because it depends on timing than because it is particularly long...
377-
}
374+
now := time.Now()
378375

379376
sum := NewSummary(SummaryOpts{
380377
Name: "test_summary",
381378
Help: "helpless",
382379
MaxAge: 100 * time.Millisecond,
383380
Objectives: map[float64]float64{0.1: 0.001},
384381
AgeBuckets: 10,
382+
now: func() time.Time {
383+
return now
384+
},
385385
})
386386

387387
m := &dto.Metric{}
388-
i := 0
389-
tick := time.NewTicker(time.Millisecond)
390-
for range tick.C {
391-
i++
388+
for i := 1; i <= 1000; i++ {
389+
now = now.Add(time.Millisecond)
392390
sum.Observe(float64(i))
393391
if i%10 == 0 {
394392
sum.Write(m)
395-
if got, want := *m.Summary.Quantile[0].Value, math.Max(float64(i)/10, float64(i-90)); math.Abs(got-want) > 20 {
393+
got := *m.Summary.Quantile[0].Value
394+
want := math.Max(float64(i)/10, float64(i-90))
395+
if math.Abs(got-want) > 20 {
396396
t.Errorf("%d. got %f, want %f", i, got, want)
397397
}
398398
m.Reset()
399399
}
400-
if i >= 1000 {
401-
break
402-
}
403400
}
404-
tick.Stop()
405-
// Wait for MaxAge without observations and make sure quantiles are NaN.
406-
time.Sleep(100 * time.Millisecond)
401+
402+
// Simulate waiting for MaxAge without observations
403+
now = now.Add(100 * time.Millisecond)
407404
sum.Write(m)
408405
if got := *m.Summary.Quantile[0].Value; !math.IsNaN(got) {
409406
t.Errorf("got %f, want NaN after expiration", got)

0 commit comments

Comments
 (0)