kubernetes: k8s.io/kubernetes/pkg/apis/autoscaling/fuzzer Index | Files

package fuzzer

import "k8s.io/kubernetes/pkg/apis/autoscaling/fuzzer"

Index

Package Files

fuzzer.go

Variables

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,
                        },
                    },
                },
            }
        },
        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.

Package fuzzer imports 6 packages (graph) and is imported by 33 packages. Updated 2018-09-17. Refresh now. Tools for package owners.