func NewKubeClientMock()

in pkg/client/kubeclient_mock.go [81:159]


func NewKubeClientMock(err bool) *KubeClientMock {
	kubeMock := &KubeClientMock{
		deleteFn: func(pod *v1.Pod) error {
			if err {
				return fmt.Errorf("error deleting pod")
			}
			log.Log(log.Test).Info("pod deleted",
				zap.String("PodName", pod.Name))
			return nil
		},
		createFn: func(pod *v1.Pod) (*v1.Pod, error) {
			if err {
				return pod, fmt.Errorf("error creating pod")
			}
			log.Log(log.Test).Info("pod created",
				zap.String("PodName", pod.Name))
			return pod, nil
		},
		updateFn: func(pod *v1.Pod, podMutator func(*v1.Pod)) (*v1.Pod, error) {
			if err {
				return pod, fmt.Errorf("error updating pod")
			}
			podMutator(pod)
			log.Log(log.Test).Info("pod updated",
				zap.String("PodName", pod.Name))
			return pod, nil
		},
		updateStatusFn: func(pod *v1.Pod) (*v1.Pod, error) {
			if err {
				return pod, fmt.Errorf("error updating pod status")
			}
			log.Log(log.Test).Info("pod status updated",
				zap.String("PodName", pod.Name))
			return pod, nil
		},
		getFn: func(podName string) (*v1.Pod, error) {
			if err {
				return nil, fmt.Errorf("error getting pod")
			}
			log.Log(log.Test).Info("Getting pod",
				zap.String("PodName", podName))
			return nil, nil
		},
		clientSet: fake.NewSimpleClientset(),
		pods:      make(map[string]*v1.Pod),
		lock:      sync.RWMutex{},
		bindStats: &BindStats{
			HostBindings: make([]HostBinding, 0, 1024),
		},
	}

	kubeMock.bindFn = func(pod *v1.Pod, hostID string) error {
		stats := kubeMock.bindStats
		if err {
			stats.Errors++
			return fmt.Errorf("binding error")
		}
		log.Log(log.Test).Info("pod bound",
			zap.String("PodName", pod.Name))

		now := time.Now()
		if stats.FirstPod == nil {
			stats.FirstPod = pod
			stats.First = now
		}
		stats.Last = now
		stats.LastPod = pod
		stats.HostBindings = append(stats.HostBindings, HostBinding{
			pod:  pod,
			time: now,
			host: hostID,
		})
		stats.Success++

		return nil
	}

	return kubeMock
}