mirror of https://github.com/knative/pkg.git
				
				
				
			Satisfy linter (#3132)
* drop deprecated linter * fix uint64=>int64 overflow * fix unnecessary fmt.Sprintf * ignore false positive fatcontext * fix integer overflows * update golangci-lint config - properly was moved * fix formatting calls * use new integer range syntax * adjust nolint comments * stop using deprecated k8s types
This commit is contained in:
		
							parent
							
								
									b4ff2c14fb
								
							
						
					
					
						commit
						accfe36491
					
				| 
						 | 
				
			
			@ -6,7 +6,6 @@ run:
 | 
			
		|||
    - injection/clients
 | 
			
		||||
 | 
			
		||||
output:
 | 
			
		||||
  uniq-by-line: true
 | 
			
		||||
  sort-results: true
 | 
			
		||||
  sort-order:
 | 
			
		||||
  - linter
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +14,7 @@ output:
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
issues:
 | 
			
		||||
  uniq-by-line: true
 | 
			
		||||
  max-issues-per-linter: 0
 | 
			
		||||
  max-same-issues: 0
 | 
			
		||||
  exclude-rules:
 | 
			
		||||
| 
						 | 
				
			
			@ -103,9 +103,6 @@ linters:
 | 
			
		|||
    # problems with the error wrapping scheme introduced in Go 1.13.
 | 
			
		||||
    - errorlint
 | 
			
		||||
 | 
			
		||||
    # Checks for pointers to enclosing loop variables.
 | 
			
		||||
    - exportloopref
 | 
			
		||||
 | 
			
		||||
    # Detects nested contexts in loops.
 | 
			
		||||
    - fatcontext
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -135,7 +135,7 @@ func ExternalTypesViaHub(t *testing.T, scheme, hubs *runtime.Scheme, fuzzerFuncs
 | 
			
		|||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if reflect.PtrTo(objType).AssignableTo(metaV1ListType) {
 | 
			
		||||
		if reflect.PointerTo(objType).AssignableTo(metaV1ListType) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -228,7 +228,7 @@ type ControllerOptions struct {
 | 
			
		|||
	WorkQueueName string
 | 
			
		||||
	Logger        *zap.SugaredLogger
 | 
			
		||||
	Reporter      StatsReporter
 | 
			
		||||
	RateLimiter   workqueue.RateLimiter
 | 
			
		||||
	RateLimiter   workqueue.TypedRateLimiter[any]
 | 
			
		||||
	Concurrency   int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +236,7 @@ type ControllerOptions struct {
 | 
			
		|||
// provided Reconciler as it is enqueued.
 | 
			
		||||
func NewContext(ctx context.Context, r Reconciler, options ControllerOptions) *Impl {
 | 
			
		||||
	if options.RateLimiter == nil {
 | 
			
		||||
		options.RateLimiter = workqueue.DefaultControllerRateLimiter()
 | 
			
		||||
		options.RateLimiter = workqueue.DefaultTypedControllerRateLimiter[any]()
 | 
			
		||||
	}
 | 
			
		||||
	if options.Reporter == nil {
 | 
			
		||||
		options.Reporter = MustNewStatsReporter(options.WorkQueueName, options.Logger)
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +263,7 @@ func NewContext(ctx context.Context, r Reconciler, options ControllerOptions) *I
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// WorkQueue permits direct access to the work queue.
 | 
			
		||||
func (c *Impl) WorkQueue() workqueue.RateLimitingInterface {
 | 
			
		||||
func (c *Impl) WorkQueue() workqueue.TypedRateLimitingInterface[any] {
 | 
			
		||||
	return c.workQueue
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -411,7 +411,7 @@ func (t testRateLimiter) When(interface{}) time.Duration { return t.delay }
 | 
			
		|||
func (t testRateLimiter) Forget(interface{})             {}
 | 
			
		||||
func (t testRateLimiter) NumRequeues(interface{}) int    { return 0 }
 | 
			
		||||
 | 
			
		||||
var _ workqueue.RateLimiter = (*testRateLimiter)(nil)
 | 
			
		||||
var _ workqueue.TypedRateLimiter[any] = (*testRateLimiter)(nil)
 | 
			
		||||
 | 
			
		||||
func TestEnqueue(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -715,7 +715,7 @@ func TestEnqueue(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		t.Run(test.name, func(t *testing.T) {
 | 
			
		||||
			var rl workqueue.RateLimiter = testRateLimiter{t, 100 * time.Millisecond}
 | 
			
		||||
			var rl workqueue.TypedRateLimiter[any] = testRateLimiter{t, 100 * time.Millisecond}
 | 
			
		||||
			impl := NewContext(context.TODO(), &nopReconciler{}, ControllerOptions{WorkQueueName: "Testing", Logger: TestLogger(t), RateLimiter: rl})
 | 
			
		||||
			test.work(impl)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -741,7 +741,7 @@ const (
 | 
			
		|||
	queueCheckTimeout = shortDelay + 500*time.Millisecond
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func pollQ(q workqueue.RateLimitingInterface, sig chan int) func(context.Context) (bool, error) {
 | 
			
		||||
func pollQ(q workqueue.TypedRateLimitingInterface[any], sig chan int) func(context.Context) (bool, error) {
 | 
			
		||||
	return func(context.Context) (bool, error) {
 | 
			
		||||
		if ql := q.Len(); ql > 0 {
 | 
			
		||||
			sig <- ql
 | 
			
		||||
| 
						 | 
				
			
			@ -1356,7 +1356,7 @@ func TestStartAndShutdownWithRequeuingWork(t *testing.T) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func drainWorkQueue(wq workqueue.RateLimitingInterface) (hasQueue []types.NamespacedName) {
 | 
			
		||||
func drainWorkQueue(wq workqueue.TypedRateLimitingInterface[any]) (hasQueue []types.NamespacedName) {
 | 
			
		||||
	for {
 | 
			
		||||
		key, shutdown := wq.Get()
 | 
			
		||||
		if key == nil && shutdown {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,12 +23,12 @@ import "k8s.io/client-go/util/workqueue"
 | 
			
		|||
// -- slow queue (slowLane queue), whose contents are processed if fast queue has no items.
 | 
			
		||||
// All the default methods operate on the fast queue, unless noted otherwise.
 | 
			
		||||
type twoLaneQueue struct {
 | 
			
		||||
	workqueue.RateLimitingInterface
 | 
			
		||||
	slowLane workqueue.RateLimitingInterface
 | 
			
		||||
	workqueue.TypedRateLimitingInterface[any]
 | 
			
		||||
	slowLane workqueue.TypedRateLimitingInterface[any]
 | 
			
		||||
	// consumerQueue is necessary to ensure that we're not reconciling
 | 
			
		||||
	// the same object at the exact same time (e.g. if it had been enqueued
 | 
			
		||||
	// in both fast and slow and is the only object there).
 | 
			
		||||
	consumerQueue workqueue.Interface
 | 
			
		||||
	consumerQueue workqueue.TypedInterface[any]
 | 
			
		||||
 | 
			
		||||
	name string
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -37,9 +37,9 @@ type twoLaneQueue struct {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// Creates a new twoLaneQueue.
 | 
			
		||||
func newTwoLaneWorkQueue(name string, rl workqueue.RateLimiter) *twoLaneQueue {
 | 
			
		||||
func newTwoLaneWorkQueue(name string, rl workqueue.TypedRateLimiter[any]) *twoLaneQueue {
 | 
			
		||||
	tlq := &twoLaneQueue{
 | 
			
		||||
		RateLimitingInterface: workqueue.NewNamedRateLimitingQueue(
 | 
			
		||||
		TypedRateLimitingInterface: workqueue.NewNamedRateLimitingQueue(
 | 
			
		||||
			rl,
 | 
			
		||||
			name+"-fast",
 | 
			
		||||
		),
 | 
			
		||||
| 
						 | 
				
			
			@ -55,12 +55,12 @@ func newTwoLaneWorkQueue(name string, rl workqueue.RateLimiter) *twoLaneQueue {
 | 
			
		|||
	// Run consumer thread.
 | 
			
		||||
	go tlq.runConsumer()
 | 
			
		||||
	// Run producer threads.
 | 
			
		||||
	go process(tlq.RateLimitingInterface, tlq.fastChan)
 | 
			
		||||
	go process(tlq.TypedRateLimitingInterface, tlq.fastChan)
 | 
			
		||||
	go process(tlq.slowLane, tlq.slowChan)
 | 
			
		||||
	return tlq
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func process(q workqueue.Interface, ch chan interface{}) {
 | 
			
		||||
func process(q workqueue.TypedInterface[any], ch chan interface{}) {
 | 
			
		||||
	// Sender closes the channel
 | 
			
		||||
	defer close(ch)
 | 
			
		||||
	for {
 | 
			
		||||
| 
						 | 
				
			
			@ -125,7 +125,7 @@ func (tlq *twoLaneQueue) runConsumer() {
 | 
			
		|||
// Shutdown implements workqueue.Interface.
 | 
			
		||||
// Shutdown shuts down both queues.
 | 
			
		||||
func (tlq *twoLaneQueue) ShutDown() {
 | 
			
		||||
	tlq.RateLimitingInterface.ShutDown()
 | 
			
		||||
	tlq.TypedRateLimitingInterface.ShutDown()
 | 
			
		||||
	tlq.slowLane.ShutDown()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -147,10 +147,10 @@ func (tlq *twoLaneQueue) Get() (interface{}, bool) {
 | 
			
		|||
// Len returns the sum of lengths.
 | 
			
		||||
// NB: actual _number_ of unique object might be less than this sum.
 | 
			
		||||
func (tlq *twoLaneQueue) Len() int {
 | 
			
		||||
	return tlq.RateLimitingInterface.Len() + tlq.slowLane.Len() + tlq.consumerQueue.Len()
 | 
			
		||||
	return tlq.TypedRateLimitingInterface.Len() + tlq.slowLane.Len() + tlq.consumerQueue.Len()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SlowLane gives direct access to the slow queue.
 | 
			
		||||
func (tlq *twoLaneQueue) SlowLane() workqueue.RateLimitingInterface {
 | 
			
		||||
func (tlq *twoLaneQueue) SlowLane() workqueue.TypedRateLimitingInterface[any] {
 | 
			
		||||
	return tlq.slowLane
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ func (r *chanRateLimiter) NumRequeues(item interface{}) int {
 | 
			
		|||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ workqueue.RateLimiter = &chanRateLimiter{}
 | 
			
		||||
var _ workqueue.TypedRateLimiter[any] = &chanRateLimiter{}
 | 
			
		||||
 | 
			
		||||
func TestRateLimit(t *testing.T) {
 | 
			
		||||
	// Verifies that we properly pass the rate limiter to the queue.
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ func TestRateLimit(t *testing.T) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func TestSlowQueue(t *testing.T) {
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultControllerRateLimiter())
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultTypedControllerRateLimiter[any]())
 | 
			
		||||
	q.SlowLane().Add("1")
 | 
			
		||||
	// Queue has async moving parts so if we check at the wrong moment, this might still be 0.
 | 
			
		||||
	if wait.PollUntilContextTimeout(context.Background(), 10*time.Millisecond, 250*time.Millisecond, true, func(ctx context.Context) (bool, error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ func TestSlowQueue(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestDoubleKey(t *testing.T) {
 | 
			
		||||
	// Verifies that we don't get double concurrent processing of the same key.
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultControllerRateLimiter())
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultTypedControllerRateLimiter[any]())
 | 
			
		||||
	q.Add("1")
 | 
			
		||||
	t.Cleanup(q.ShutDown)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +159,7 @@ func TestDoubleKey(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestOrder(t *testing.T) {
 | 
			
		||||
	// Verifies that we read from the fast queue first.
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultControllerRateLimiter())
 | 
			
		||||
	q := newTwoLaneWorkQueue("live-in-the-fast-lane", workqueue.DefaultTypedControllerRateLimiter[any]())
 | 
			
		||||
	stop := make(chan struct{})
 | 
			
		||||
	t.Cleanup(func() {
 | 
			
		||||
		close(stop)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								hash/hash.go
								
								
								
								
							
							
						
						
									
										22
									
								
								hash/hash.go
								
								
								
								
							| 
						 | 
				
			
			@ -35,7 +35,7 @@ const (
 | 
			
		|||
 | 
			
		||||
	// universe represents the possible range of angles [0, universe).
 | 
			
		||||
	// We want to have universe divide total range evenly to reduce bias.
 | 
			
		||||
	universe = (1 << 11)
 | 
			
		||||
	universe uint64 = (1 << 11)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// computeAngle returns a uint64 number which represents
 | 
			
		||||
| 
						 | 
				
			
			@ -51,13 +51,13 @@ func computeHash(n []byte, h hash.Hash64) uint64 {
 | 
			
		|||
 | 
			
		||||
type hashData struct {
 | 
			
		||||
	// The set of all hashes for fast lookup and to name mapping
 | 
			
		||||
	nameLookup map[int]string
 | 
			
		||||
	nameLookup map[uint64]string
 | 
			
		||||
	// Sorted set of hashes for selection algorithm.
 | 
			
		||||
	hashPool []int
 | 
			
		||||
	hashPool []uint64
 | 
			
		||||
	// start angle
 | 
			
		||||
	start int
 | 
			
		||||
	start uint64
 | 
			
		||||
	// step angle
 | 
			
		||||
	step int
 | 
			
		||||
	step uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (hd *hashData) fromIndexSet(s sets.Set[int]) sets.Set[string] {
 | 
			
		||||
| 
						 | 
				
			
			@ -85,13 +85,13 @@ func buildHashes(in sets.Set[string], target string) *hashData {
 | 
			
		|||
	buf.WriteString(startSalt)
 | 
			
		||||
	hasher := fnv.New64a()
 | 
			
		||||
	hd := &hashData{
 | 
			
		||||
		nameLookup: make(map[int]string, len(from)),
 | 
			
		||||
		hashPool:   make([]int, len(from)),
 | 
			
		||||
		start:      int(computeHash(buf.Bytes(), hasher) % universe),
 | 
			
		||||
		nameLookup: make(map[uint64]string, len(from)),
 | 
			
		||||
		hashPool:   make([]uint64, len(from)),
 | 
			
		||||
		start:      computeHash(buf.Bytes(), hasher) % universe,
 | 
			
		||||
	}
 | 
			
		||||
	buf.Truncate(len(target)) // Discard the angle salt.
 | 
			
		||||
	buf.WriteString(stepSalt)
 | 
			
		||||
	hd.step = int(computeHash(buf.Bytes(), hasher) % universe)
 | 
			
		||||
	hd.step = computeHash(buf.Bytes(), hasher) % universe
 | 
			
		||||
 | 
			
		||||
	for i, f := range from {
 | 
			
		||||
		buf.Reset() // This retains the storage.
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ func buildHashes(in sets.Set[string], target string) *hashData {
 | 
			
		|||
		buf.WriteString(f)
 | 
			
		||||
		buf.WriteString(target)
 | 
			
		||||
		h := computeHash(buf.Bytes(), hasher)
 | 
			
		||||
		hs := int(h % universe)
 | 
			
		||||
		hs := h % universe
 | 
			
		||||
		// Two values slotted to the same bucket.
 | 
			
		||||
		// On average should happen with 1/universe probability.
 | 
			
		||||
		_, ok := hd.nameLookup[hs]
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ func buildHashes(in sets.Set[string], target string) *hashData {
 | 
			
		|||
			// Feed the hash as salt.
 | 
			
		||||
			buf.WriteString(strconv.FormatUint(h, 16 /*append hex strings for shortness*/))
 | 
			
		||||
			h = computeHash(buf.Bytes(), hasher)
 | 
			
		||||
			hs = int(h % universe)
 | 
			
		||||
			hs = h % universe
 | 
			
		||||
			_, ok = hd.nameLookup[hs]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -185,7 +185,7 @@ func BenchmarkSelection(b *testing.B) {
 | 
			
		|||
			b.Run(fmt.Sprintf("pool-%d-subset-%d", v, ss), func(b *testing.B) {
 | 
			
		||||
				target := uuid.NewString()
 | 
			
		||||
				in := sets.New[string](from[:v]...)
 | 
			
		||||
				for i := 0; i < b.N; i++ {
 | 
			
		||||
				for range b.N {
 | 
			
		||||
					ChooseSubset(in, 10, target)
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,6 @@ limitations under the license.
 | 
			
		|||
package kmeta
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +69,7 @@ func TestChildName(t *testing.T) {
 | 
			
		|||
		t.Run(test.parent+"-"+test.suffix, func(t *testing.T) {
 | 
			
		||||
			got, want := ChildName(test.parent, test.suffix), test.want
 | 
			
		||||
			if errs := validation.IsDNS1123Subdomain(got); len(errs) != 0 {
 | 
			
		||||
				t.Errorf(fmt.Sprintf("Invalid DNS1123 Subdomain %63s\n\n Errors: %v", got, errs))
 | 
			
		||||
				t.Errorf("Invalid DNS1123 Subdomain %63s\n\n Errors: %v", got, errs)
 | 
			
		||||
			}
 | 
			
		||||
			if got != want {
 | 
			
		||||
				t.Errorf("%s-%s: got: %63s want: %63s\ndiff:%s", test.parent, test.suffix, got, want, cmp.Diff(want, got))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -232,7 +232,7 @@ func prometheusPort() (int, error) {
 | 
			
		|||
		return defaultPrometheusPort, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pp, err := strconv.ParseUint(ppStr, 10, 16)
 | 
			
		||||
	pp, err := strconv.ParseInt(ppStr, 10, 16)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return -1, fmt.Errorf("the environment variable %q could not be parsed as a port number: %w",
 | 
			
		||||
			prometheusPortEnvName, err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ package metrics
 | 
			
		|||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"log"
 | 
			
		||||
	"math"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -379,76 +380,76 @@ func (msp *MemStatsProvider) Start(ctx context.Context, period time.Duration) {
 | 
			
		|||
				ms := runtime.MemStats{}
 | 
			
		||||
				runtime.ReadMemStats(&ms)
 | 
			
		||||
				if msp.Alloc != nil {
 | 
			
		||||
					Record(ctx, msp.Alloc.M(int64(ms.Alloc)))
 | 
			
		||||
					Record(ctx, msp.Alloc.M(safeint64(ms.Alloc)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.TotalAlloc != nil {
 | 
			
		||||
					Record(ctx, msp.TotalAlloc.M(int64(ms.TotalAlloc)))
 | 
			
		||||
					Record(ctx, msp.TotalAlloc.M(safeint64(ms.TotalAlloc)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.Sys != nil {
 | 
			
		||||
					Record(ctx, msp.Sys.M(int64(ms.Sys)))
 | 
			
		||||
					Record(ctx, msp.Sys.M(safeint64(ms.Sys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.Lookups != nil {
 | 
			
		||||
					Record(ctx, msp.Lookups.M(int64(ms.Lookups)))
 | 
			
		||||
					Record(ctx, msp.Lookups.M(safeint64(ms.Lookups)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.Mallocs != nil {
 | 
			
		||||
					Record(ctx, msp.Mallocs.M(int64(ms.Mallocs)))
 | 
			
		||||
					Record(ctx, msp.Mallocs.M(safeint64(ms.Mallocs)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.Frees != nil {
 | 
			
		||||
					Record(ctx, msp.Frees.M(int64(ms.Frees)))
 | 
			
		||||
					Record(ctx, msp.Frees.M(safeint64(ms.Frees)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapAlloc != nil {
 | 
			
		||||
					Record(ctx, msp.HeapAlloc.M(int64(ms.HeapAlloc)))
 | 
			
		||||
					Record(ctx, msp.HeapAlloc.M(safeint64(ms.HeapAlloc)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapSys != nil {
 | 
			
		||||
					Record(ctx, msp.HeapSys.M(int64(ms.HeapSys)))
 | 
			
		||||
					Record(ctx, msp.HeapSys.M(safeint64(ms.HeapSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapIdle != nil {
 | 
			
		||||
					Record(ctx, msp.HeapIdle.M(int64(ms.HeapIdle)))
 | 
			
		||||
					Record(ctx, msp.HeapIdle.M(safeint64(ms.HeapIdle)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapInuse != nil {
 | 
			
		||||
					Record(ctx, msp.HeapInuse.M(int64(ms.HeapInuse)))
 | 
			
		||||
					Record(ctx, msp.HeapInuse.M(safeint64(ms.HeapInuse)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapReleased != nil {
 | 
			
		||||
					Record(ctx, msp.HeapReleased.M(int64(ms.HeapReleased)))
 | 
			
		||||
					Record(ctx, msp.HeapReleased.M(safeint64(ms.HeapReleased)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.HeapObjects != nil {
 | 
			
		||||
					Record(ctx, msp.HeapObjects.M(int64(ms.HeapObjects)))
 | 
			
		||||
					Record(ctx, msp.HeapObjects.M(safeint64(ms.HeapObjects)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.StackInuse != nil {
 | 
			
		||||
					Record(ctx, msp.StackInuse.M(int64(ms.StackInuse)))
 | 
			
		||||
					Record(ctx, msp.StackInuse.M(safeint64(ms.StackInuse)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.StackSys != nil {
 | 
			
		||||
					Record(ctx, msp.StackSys.M(int64(ms.StackSys)))
 | 
			
		||||
					Record(ctx, msp.StackSys.M(safeint64(ms.StackSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.MSpanInuse != nil {
 | 
			
		||||
					Record(ctx, msp.MSpanInuse.M(int64(ms.MSpanInuse)))
 | 
			
		||||
					Record(ctx, msp.MSpanInuse.M(safeint64(ms.MSpanInuse)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.MSpanSys != nil {
 | 
			
		||||
					Record(ctx, msp.MSpanSys.M(int64(ms.MSpanSys)))
 | 
			
		||||
					Record(ctx, msp.MSpanSys.M(safeint64(ms.MSpanSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.MCacheInuse != nil {
 | 
			
		||||
					Record(ctx, msp.MCacheInuse.M(int64(ms.MCacheInuse)))
 | 
			
		||||
					Record(ctx, msp.MCacheInuse.M(safeint64(ms.MCacheInuse)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.MCacheSys != nil {
 | 
			
		||||
					Record(ctx, msp.MCacheSys.M(int64(ms.MCacheSys)))
 | 
			
		||||
					Record(ctx, msp.MCacheSys.M(safeint64(ms.MCacheSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.BuckHashSys != nil {
 | 
			
		||||
					Record(ctx, msp.BuckHashSys.M(int64(ms.BuckHashSys)))
 | 
			
		||||
					Record(ctx, msp.BuckHashSys.M(safeint64(ms.BuckHashSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.GCSys != nil {
 | 
			
		||||
					Record(ctx, msp.GCSys.M(int64(ms.GCSys)))
 | 
			
		||||
					Record(ctx, msp.GCSys.M(safeint64(ms.GCSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.OtherSys != nil {
 | 
			
		||||
					Record(ctx, msp.OtherSys.M(int64(ms.OtherSys)))
 | 
			
		||||
					Record(ctx, msp.OtherSys.M(safeint64(ms.OtherSys)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.NextGC != nil {
 | 
			
		||||
					Record(ctx, msp.NextGC.M(int64(ms.NextGC)))
 | 
			
		||||
					Record(ctx, msp.NextGC.M(safeint64(ms.NextGC)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.LastGC != nil {
 | 
			
		||||
					Record(ctx, msp.LastGC.M(int64(ms.LastGC)))
 | 
			
		||||
					Record(ctx, msp.LastGC.M(safeint64(ms.LastGC)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.PauseTotalNs != nil {
 | 
			
		||||
					Record(ctx, msp.PauseTotalNs.M(int64(ms.PauseTotalNs)))
 | 
			
		||||
					Record(ctx, msp.PauseTotalNs.M(safeint64(ms.PauseTotalNs)))
 | 
			
		||||
				}
 | 
			
		||||
				if msp.NumGC != nil {
 | 
			
		||||
					Record(ctx, msp.NumGC.M(int64(ms.NumGC)))
 | 
			
		||||
| 
						 | 
				
			
			@ -549,3 +550,11 @@ func (msp *MemStatsProvider) DefaultViews() (views []*view.View) {
 | 
			
		|||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func safeint64(val uint64) int64 {
 | 
			
		||||
	if val > math.MaxInt64 {
 | 
			
		||||
		return math.MaxInt64
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return int64(val)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ func BenchmarkMetricsRecording(b *testing.B) {
 | 
			
		|||
		b.Error("Failed to create tags")
 | 
			
		||||
	}
 | 
			
		||||
	b.Run("sequential", func(b *testing.B) {
 | 
			
		||||
		for j := 0; j < b.N; j++ {
 | 
			
		||||
		for range b.N {
 | 
			
		||||
			ctx, err := getTagCtx()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				b.Error("Failed to get context")
 | 
			
		||||
| 
						 | 
				
			
			@ -182,7 +182,7 @@ func BenchmarkMetricsRecording(b *testing.B) {
 | 
			
		|||
		})
 | 
			
		||||
	})
 | 
			
		||||
	b.Run("sequential-batch", func(b *testing.B) {
 | 
			
		||||
		for j := 0; j < b.N; j++ {
 | 
			
		||||
		for range b.N {
 | 
			
		||||
			ctx, err := getTagCtx()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				b.Error("Failed to get context")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -286,7 +286,7 @@ func BenchmarkResourceToKey(b *testing.B) {
 | 
			
		|||
		r := &resource.Resource{Type: "foobar", Labels: labels}
 | 
			
		||||
 | 
			
		||||
		b.Run(fmt.Sprintf("%d-labels", count), func(b *testing.B) {
 | 
			
		||||
			for i := 0; i < b.N; i++ {
 | 
			
		||||
			for range b.N {
 | 
			
		||||
				resourceToKey(r)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,6 +74,6 @@ func TestBannedImports(t *testing.T) {
 | 
			
		|||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf(err.Error())
 | 
			
		||||
		t.Error(err.Error())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ func BenchmarkSpanMiddleware(b *testing.B) {
 | 
			
		|||
	req.Header["X-B3-Spanid"] = []string{"b3bd5e1c4318c78a"}
 | 
			
		||||
 | 
			
		||||
	b.Run("sequential", func(b *testing.B) {
 | 
			
		||||
		for j := 0; j < b.N; j++ {
 | 
			
		||||
		for range b.N {
 | 
			
		||||
			middleware.ServeHTTP(bw, req)
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -351,7 +351,7 @@ func TestAdmissionInvalidResponseForResource(t *testing.T) {
 | 
			
		|||
	expectedError := "everything is fine."
 | 
			
		||||
	ac := &fixedAdmissionController{
 | 
			
		||||
		path:     "/booger",
 | 
			
		||||
		response: MakeErrorStatus(expectedError),
 | 
			
		||||
		response: MakeErrorStatus(expectedError), //nolint
 | 
			
		||||
	}
 | 
			
		||||
	wh, serverURL, ctx, cancel, err := testSetup(t, ac)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,6 +96,7 @@ func MakeFactory(ctor Ctor) rtesting.Factory {
 | 
			
		|||
		// Set up our Controller from the fakes.
 | 
			
		||||
		c := ctor(ctx, &ls, configmap.NewStaticWatcher())
 | 
			
		||||
		// Update the context with the stuff we decorated it with.
 | 
			
		||||
		//nolint:fatcontext // Drop when https://github.com/Crocmagnon/fatcontext/issues/34 is fixed
 | 
			
		||||
		r.Ctx = ctx
 | 
			
		||||
 | 
			
		||||
		// If the reconcilers is leader aware, then promote it.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue