github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/caas/kubernetes/provider/watcher/test/helpers.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package k8swatchertest
     5  
     6  import (
     7  	jujuclock "github.com/juju/clock"
     8  	"k8s.io/client-go/tools/cache"
     9  
    10  	k8swatcher "github.com/juju/juju/caas/kubernetes/provider/watcher"
    11  	"github.com/juju/juju/core/watcher/watchertest"
    12  )
    13  
    14  func NewKubernetesTestWatcher() (k8swatcher.KubernetesNotifyWatcher, func()) {
    15  	ch := make(chan struct{}, 1)
    16  	ch <- struct{}{}
    17  	return watchertest.NewMockNotifyWatcher(ch), func() {
    18  		select {
    19  		case ch <- struct{}{}:
    20  		default:
    21  		}
    22  	}
    23  }
    24  
    25  func NewKubernetesTestStringsWatcher() (k8swatcher.KubernetesStringsWatcher, func([]string)) {
    26  	ch := make(chan []string, 1)
    27  	ch <- []string{}
    28  	return watchertest.NewMockStringsWatcher(ch), func(s []string) {
    29  		select {
    30  		case ch <- s:
    31  		default:
    32  		}
    33  	}
    34  }
    35  
    36  func NewKubernetesTestWatcherFunc(w k8swatcher.KubernetesNotifyWatcher) k8swatcher.NewK8sWatcherFunc {
    37  	return func(_ cache.SharedIndexInformer, _ string, _ jujuclock.Clock) (k8swatcher.KubernetesNotifyWatcher, error) {
    38  		return w, nil
    39  	}
    40  }