/
fake.go
37 lines (31 loc) · 1.32 KB
/
fake.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package cluster
import (
"k8s.io/apimachinery/pkg/watch"
kubeFake "k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/testing"
"github.com/grtl/mysql-operator/pkg/client/clientset/versioned/fake"
operator "github.com/grtl/mysql-operator/pkg/operator/cluster"
)
// FakeClusterController can be used as a cluster controller in tests.
// It simulates the cluster controller behaviour with fake clientsets
// and a fake cluster operator.
type FakeClusterController struct {
*clusterController
*operator.FakeClusterOperator
}
// NewFakeClusterController returns new operator controller among with prepended
// watcher. Created controller uses fake clientSets and operator. Size indicates
// watcher events channel buffer.
func NewFakeClusterController(size int) (*watch.FakeWatcher, *FakeClusterController) {
kubeClientset := kubeFake.NewSimpleClientset()
clientset := fake.NewSimpleClientset()
watcher := watch.NewFakeWithChanSize(size, false)
clientset.PrependWatchReactor("mysqlclusters", testing.DefaultWatchReactor(watcher, nil))
fakeController := NewClusterController(clientset, kubeClientset).(*clusterController)
fakeOperator := operator.NewFakeOperator()
fakeController.clusterOperator = fakeOperator
return watcher, &FakeClusterController{
clusterController: fakeController,
FakeClusterOperator: fakeOperator,
}
}