fuzzer

package
v1.19.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2020 License: Apache-2.0 Imports: 6 Imported by: 26

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
	return []interface{}{
		func(s *autoscaling.ScaleStatus, c fuzz.Continue) {
			c.FuzzNoCustom(s)

			metaSelector := &metav1.LabelSelector{}
			c.Fuzz(metaSelector)
			labelSelector, _ := metav1.LabelSelectorAsSelector(metaSelector)
			s.Selector = labelSelector.String()
		},
		func(s *autoscaling.HorizontalPodAutoscalerSpec, c fuzz.Continue) {
			c.FuzzNoCustom(s)
			minReplicas := int32(c.Rand.Int31())
			s.MinReplicas = &minReplicas

			randomQuantity := func() resource.Quantity {
				var q resource.Quantity
				c.Fuzz(&q)

				_ = q.String()
				return q
			}

			var podMetricID autoscaling.MetricIdentifier
			var objMetricID autoscaling.MetricIdentifier
			c.Fuzz(&podMetricID)
			c.Fuzz(&objMetricID)

			targetUtilization := int32(c.RandUint64())
			averageValue := randomQuantity()
			s.Metrics = []autoscaling.MetricSpec{
				{
					Type: autoscaling.PodsMetricSourceType,
					Pods: &autoscaling.PodsMetricSource{
						Metric: podMetricID,
						Target: autoscaling.MetricTarget{
							Type:         autoscaling.AverageValueMetricType,
							AverageValue: &averageValue,
						},
					},
				},
				{
					Type: autoscaling.ObjectMetricSourceType,
					Object: &autoscaling.ObjectMetricSource{
						Metric: objMetricID,
						Target: autoscaling.MetricTarget{
							Type:  autoscaling.ValueMetricType,
							Value: &averageValue,
						},
					},
				},
				{
					Type: autoscaling.ResourceMetricSourceType,
					Resource: &autoscaling.ResourceMetricSource{
						Name: api.ResourceCPU,
						Target: autoscaling.MetricTarget{
							Type:               autoscaling.UtilizationMetricType,
							AverageUtilization: &targetUtilization,
						},
					},
				},
			}
			stabilizationWindow := int32(c.RandUint64())
			maxPolicy := autoscaling.MaxPolicySelect
			minPolicy := autoscaling.MinPolicySelect
			s.Behavior = &autoscaling.HorizontalPodAutoscalerBehavior{
				ScaleUp: &autoscaling.HPAScalingRules{
					StabilizationWindowSeconds: &stabilizationWindow,
					SelectPolicy:               &maxPolicy,
					Policies: []autoscaling.HPAScalingPolicy{
						{
							Type:          autoscaling.PodsScalingPolicy,
							Value:         int32(c.RandUint64()),
							PeriodSeconds: int32(c.RandUint64()),
						},
						{
							Type:          autoscaling.PercentScalingPolicy,
							Value:         int32(c.RandUint64()),
							PeriodSeconds: int32(c.RandUint64()),
						},
					},
				},
				ScaleDown: &autoscaling.HPAScalingRules{
					StabilizationWindowSeconds: &stabilizationWindow,
					SelectPolicy:               &minPolicy,
					Policies: []autoscaling.HPAScalingPolicy{
						{
							Type:          autoscaling.PodsScalingPolicy,
							Value:         int32(c.RandUint64()),
							PeriodSeconds: int32(c.RandUint64()),
						},
						{
							Type:          autoscaling.PercentScalingPolicy,
							Value:         int32(c.RandUint64()),
							PeriodSeconds: int32(c.RandUint64()),
						},
					},
				},
			}
		},
		func(s *autoscaling.HorizontalPodAutoscalerStatus, c fuzz.Continue) {
			c.FuzzNoCustom(s)
			randomQuantity := func() resource.Quantity {
				var q resource.Quantity
				c.Fuzz(&q)

				_ = q.String()
				return q
			}
			averageValue := randomQuantity()
			currentUtilization := int32(c.RandUint64())
			s.CurrentMetrics = []autoscaling.MetricStatus{
				{
					Type: autoscaling.PodsMetricSourceType,
					Pods: &autoscaling.PodsMetricStatus{
						Metric: autoscaling.MetricIdentifier{
							Name: c.RandString(),
						},
						Current: autoscaling.MetricValueStatus{
							AverageValue: &averageValue,
						},
					},
				},
				{
					Type: autoscaling.ResourceMetricSourceType,
					Resource: &autoscaling.ResourceMetricStatus{
						Name: api.ResourceCPU,
						Current: autoscaling.MetricValueStatus{
							AverageUtilization: &currentUtilization,
							AverageValue:       &averageValue,
						},
					},
				},
			}
		},
	}
}

Funcs returns the fuzzer functions for the autoscaling api group.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL