func TestFakeClient(t *testing.T) {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	// Create the fake client.
	client := fake.NewSimpleClientset()

	// We will create an informer that writes added pods to a channel.
	pods := make(chan *v1.Pod, 1)
	informers := informers.NewSharedInformerFactory(client, 0)
	podInformer := informers.Core().V1().Pods().Informer()
	podInformer.AddEventHandler(&cache.ResourceEventHandlerFuncs{
		AddFunc: func(obj interface{}) {
			pod := obj.(*v1.Pod)
			t.Logf("pod added: %s/%s", pod.Namespace, pod.Name)
			pods <- pod
		},
	})

	// Make sure informers are running.
	informers.Start(ctx.Done())

	// This is not required in tests, but it serves as a proof-of-concept by
	// ensuring that the informer goroutine have warmed up and called List before
	// we send any events to it.
	cache.WaitForCacheSync(ctx.Done(), podInformer.HasSynced)

	// Inject an event into the fake client.
	p := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "my-pod"}}
	_, err := client.CoreV1().Pods("test-ns").Create(context.TODO(), p, metav1.CreateOptions{})
	if err != nil {
		t.Fatalf("error injecting pod add: %v", err)
	}

	select {
	case pod := <-pods:
		t.Logf("Got pod from channel: %s/%s", pod.Namespace, pod.Name)
	case <-time.After(wait.ForeverTestTimeout):
		t.Error("Informer did not get the added pod")
	}
}
// TestFakeClient demonstrates how to use a fake client with SharedInformerFactory in tests.
TestFakeClient demonstrates how to use a fake client with SharedInformerFactory in tests.
// TestFakeClient demonstrates how to use a fake client with SharedInformerFactory in tests .
func TestFakeClient(t *testing.T) {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	client := fake.NewSimpleClientset()
	pods := make(chan *v1.Pod, 1)
	informers := informers.NewSharedInformerFactory(client, 0)
	podInformer := informers.Core().V1().Pods().Informer()
	podInformer.AddEventHandler(&cache.ResourceEventHandlerFuncs{
		AddFunc: func(obj interface{}) {
			pod := obj.(*v1.Pod)
			t.Logf("pod added: %s/%s", pod.Namespace, pod.Name)
			pods <- pod
		},
	})
	informers.Start(ctx.Done())
	cache.WaitForCacheSync(ctx.Done(), podInformer.HasSynced)
	p := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "my-pod"}}
	_, err := client.CoreV1().Pods("test-ns").Create(context.TODO(), p, metav1.CreateOptions{})
	if err != nil {
		t.Fatalf("error injecting pod add: %v", err)
	}
	select {
	case pod := <-pods:
		t.Logf("Got pod from channel: %s/%s", pod.Namespace, pod.Name)
	case <-time.After(wait.ForeverTestTimeout):
		t.Error("Informer did not get the added pod")
	}
}
func TestFakeClient ( t * testing . T ) { ctx , cancel := context . WithCancel ( context . Background ( ) ) defer cancel ( ) client := fake . NewSimpleClientset ( ) pods := make ( chan * v1 . Pod , 1 ) informers := informers . NewSharedInformerFactory ( client , 0 ) podInformer := informers . Core ( ) . V1 ( ) . Pods ( ) . Informer ( ) podInformer . AddEventHandler ( & cache . ResourceEventHandlerFuncs { AddFunc : func ( obj interface { } ) { pod := obj . ( * v1 . Pod ) t . Logf ( " " , pod . Namespace , pod . Name ) pods <- pod } , } ) informers . Start ( ctx . Done ( ) ) cache . WaitForCacheSync ( ctx . Done ( ) , podInformer . HasSynced ) p := & v1 . Pod { ObjectMeta : metav1 . ObjectMeta { Name : " " } } _ , err := client . CoreV1 ( ) . Pods ( " " ) . Create ( context . TODO ( ) , p , metav1 . CreateOptions { } ) if err != nil { t . Fatalf ( " " , err ) } select { case pod := <- pods : t . Logf ( " " , pod . Namespace , pod . Name ) case <- time . After ( wait . ForeverTestTimeout ) : t . Error ( " " ) } }
TestFakeClient demonstrates how to use a fake client with SharedInformerFactory in tests.
TestFakeClient demonstrates how to use a fake client with SharedInformerFactory in tests .
// Create the fake client. // We will create an informer that writes added pods to a channel. // Make sure informers are running. // This is not required in tests, but it serves as a proof-of-concept by // ensuring that the informer goroutine have warmed up and called List before // we send any events to it. // Inject an event into the fake client.