mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 18:28:13 +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()
 | |
| }
 | 
