File: test_utils.go

package info (click to toggle)
prometheus 2.53.5%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 25,452 kB
  • sloc: javascript: 2,423; yacc: 758; sh: 431; makefile: 231; lex: 189
file content (52 lines) | stat: -rw-r--r-- 1,783 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright 2023 The Prometheus 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 histogram

// GenerateBigTestHistograms generates a slice of histograms with given number of buckets each.
func GenerateBigTestHistograms(numHistograms, numBuckets int) []*Histogram {
	numSpans := numBuckets / 10
	bucketsPerSide := numBuckets / 2
	spanLength := uint32(bucketsPerSide / numSpans)
	// Given all bucket deltas are 1, sum bucketsPerSide + 1.
	observationCount := uint64(bucketsPerSide) * (1 + uint64(bucketsPerSide))

	var histograms []*Histogram
	for i := 0; i < numHistograms; i++ {
		h := &Histogram{
			Count:           uint64(i) + observationCount,
			ZeroCount:       uint64(i),
			ZeroThreshold:   1e-128,
			Sum:             18.4 * float64(i+1),
			Schema:          2,
			NegativeSpans:   make([]Span, numSpans),
			PositiveSpans:   make([]Span, numSpans),
			NegativeBuckets: make([]int64, bucketsPerSide),
			PositiveBuckets: make([]int64, bucketsPerSide),
		}

		for j := 0; j < numSpans; j++ {
			s := Span{Offset: 1, Length: spanLength}
			h.NegativeSpans[j] = s
			h.PositiveSpans[j] = s
		}

		for j := 0; j < bucketsPerSide; j++ {
			h.NegativeBuckets[j] = 1
			h.PositiveBuckets[j] = 1
		}

		histograms = append(histograms, h)
	}
	return histograms
}