mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Copyright 2024 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 (
 | 
						|
	"os"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"k8s.io/component-base/metrics/testutil"
 | 
						|
)
 | 
						|
 | 
						|
const imagePullDurationKey = "kubelet_" + ImagePullDurationKey
 | 
						|
 | 
						|
func TestImagePullDurationMetric(t *testing.T) {
 | 
						|
	t.Run("register image pull duration", func(t *testing.T) {
 | 
						|
		Register()
 | 
						|
		defer clearMetrics()
 | 
						|
 | 
						|
		// Pairs of image size in bytes and pull duration in seconds
 | 
						|
		dataPoints := [][]float64{
 | 
						|
			// 0 byets, 0 seconds
 | 
						|
			{0, 0},
 | 
						|
			// 5MB, 10 seconds
 | 
						|
			{5 * 1024 * 1024, 10},
 | 
						|
			// 15MB, 20 seconds
 | 
						|
			{15 * 1024 * 1024, 20},
 | 
						|
			// 500 MB, 200 seconds
 | 
						|
			{500 * 1024 * 1024, 200},
 | 
						|
			// 15 GB, 6000 seconds,
 | 
						|
			{15 * 1024 * 1024 * 1024, 6000},
 | 
						|
			// 200 GB, 10000 seconds
 | 
						|
			{200 * 1024 * 1024 * 1024, 10000},
 | 
						|
		}
 | 
						|
 | 
						|
		for _, dp := range dataPoints {
 | 
						|
			imageSize := int64(dp[0])
 | 
						|
			duration := dp[1]
 | 
						|
			t.Log(imageSize, duration)
 | 
						|
			t.Log(GetImageSizeBucket(uint64(imageSize)))
 | 
						|
			ImagePullDuration.WithLabelValues(GetImageSizeBucket(uint64(imageSize))).Observe(duration)
 | 
						|
		}
 | 
						|
 | 
						|
		wants, err := os.Open("testdata/image_pull_duration_metric")
 | 
						|
		defer func() {
 | 
						|
			if err := wants.Close(); err != nil {
 | 
						|
				t.Error(err)
 | 
						|
			}
 | 
						|
		}()
 | 
						|
 | 
						|
		if err != nil {
 | 
						|
			t.Fatal(err)
 | 
						|
		}
 | 
						|
 | 
						|
		if err := testutil.GatherAndCompare(GetGather(), wants, imagePullDurationKey); err != nil {
 | 
						|
			t.Error(err)
 | 
						|
		}
 | 
						|
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func clearMetrics() {
 | 
						|
	ImagePullDuration.Reset()
 | 
						|
}
 |