Skip to content

Commit 5a191cf

Browse files
committed
Bump client version. Add backup controller tests.
1 parent 723b70c commit 5a191cf

File tree

10 files changed

+286
-140
lines changed

10 files changed

+286
-140
lines changed

Gopkg.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,23 @@ required = [
99

1010
[[constraint]]
1111
name = "k8s.io/api"
12-
version = "kubernetes-1.9.2"
12+
version = "kubernetes-1.9.6"
1313

1414
[[constraint]]
1515
name = "k8s.io/apimachinery"
16-
version = "kubernetes-1.9.2"
16+
version = "kubernetes-1.9.6"
1717

1818
[[constraint]]
1919
name = "k8s.io/client-go"
20-
version = "kubernetes-1.9.2"
20+
version = "kubernetes-1.9.6"
2121

2222
[[constraint]]
2323
name = "k8s.io/code-generator"
24-
version = "kubernetes-1.9.2"
24+
version = "kubernetes-1.9.6"
2525

2626
[[constraint]]
2727
name = "k8s.io/apiextensions-apiserver"
28-
version = "kubernetes-1.9.2"
28+
version = "kubernetes-1.9.6"
2929

3030
# gengo needs to be manually pinned to the version listed in code-generators
3131
# Gopkg.toml, because the k8s project does not produce Gopkg.toml files & dep

pkg/backupfactory/backupfactory_test.go

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -119,22 +119,9 @@ func TestSync(t *testing.T) {
119119
t.Fail()
120120
return
121121
}
122-
}
123122

124-
// func TestSyncNoCluster(t *testing.T) {
125-
// client := fake.NewSimpleClientset()
126-
// myClient := fakeMyClient.NewSimpleClientset()
127-
//
128-
// backup := newFakeBackup("test-1", "")
129-
// f := getFakeFactory(backup, client, myClient)
130-
//
131-
// err := f.SetDefaults()
132-
// if err != nil {
133-
// t.Fail()
134-
// }
135-
// ctx := context.TODO()
136-
// err = f.Sync(ctx)
137-
// if err == nil {
138-
// t.Fail()
139-
// }
140-
// }
123+
err = f.Sync(ctx)
124+
if err != nil {
125+
t.Fail()
126+
}
127+
}
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
/*
2+
Copyright 2018 Pressinfra SRL
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package backupscontroller
18+
19+
import (
20+
"context"
21+
"flag"
22+
"fmt"
23+
"strings"
24+
"testing"
25+
"time"
26+
27+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28+
kubeinformers "k8s.io/client-go/informers"
29+
"k8s.io/client-go/kubernetes/fake"
30+
"k8s.io/client-go/tools/record"
31+
32+
api "github.com/presslabs/mysql-operator/pkg/apis/mysql/v1alpha1"
33+
fakeMyClient "github.com/presslabs/mysql-operator/pkg/generated/clientset/versioned/fake"
34+
informers "github.com/presslabs/mysql-operator/pkg/generated/informers/externalversions"
35+
)
36+
37+
const (
38+
namespace = "default"
39+
)
40+
41+
func init() {
42+
43+
// make tests verbose
44+
flag.Set("alsologtostderr", "true")
45+
flag.Set("v", "5")
46+
}
47+
48+
func newFakeCluster(myClient *fakeMyClient.Clientset, name string) *api.MysqlCluster {
49+
cluster := &api.MysqlCluster{
50+
ObjectMeta: metav1.ObjectMeta{
51+
Name: name,
52+
},
53+
Spec: api.ClusterSpec{
54+
Replicas: 1,
55+
SecretName: name,
56+
},
57+
}
58+
59+
_, err := myClient.MysqlV1alpha1().MysqlClusters(namespace).Create(cluster)
60+
if err != nil {
61+
fmt.Println("Failed to create cluster:", err)
62+
}
63+
64+
return cluster
65+
}
66+
67+
func newFakeBackup(name, clName string) *api.MysqlBackup {
68+
return &api.MysqlBackup{
69+
ObjectMeta: metav1.ObjectMeta{
70+
Name: name,
71+
Namespace: namespace,
72+
},
73+
Spec: api.BackupSpec{
74+
ClusterName: clName,
75+
BucketUri: "gs://bucket/a.xb.gz",
76+
BucketSecretName: name,
77+
},
78+
}
79+
}
80+
81+
func newController(stop chan struct{}, client *fake.Clientset,
82+
myClient *fakeMyClient.Clientset,
83+
rec *record.FakeRecorder,
84+
) *Controller {
85+
86+
sharedInformerFactory := informers.NewSharedInformerFactory(
87+
myClient, time.Second)
88+
kubeSharedInformerFactory := kubeinformers.NewSharedInformerFactory(
89+
client, time.Second)
90+
91+
sharedInformerFactory.Start(stop)
92+
kubeSharedInformerFactory.Start(stop)
93+
94+
return New(
95+
client,
96+
myClient,
97+
sharedInformerFactory.Mysql().V1alpha1().MysqlBackups(),
98+
sharedInformerFactory.Mysql().V1alpha1().MysqlClusters(),
99+
rec,
100+
namespace,
101+
kubeSharedInformerFactory.Batch().V1().Jobs(),
102+
)
103+
}
104+
105+
// TestBackupCompleteSync
106+
// Test: a backup already completed
107+
// Expect: skip sync-ing
108+
func TestBackupCompleteSync(t *testing.T) {
109+
client := fake.NewSimpleClientset()
110+
myClient := fakeMyClient.NewSimpleClientset()
111+
rec := record.NewFakeRecorder(100)
112+
113+
stop := make(chan struct{})
114+
defer close(stop)
115+
controller := newController(stop, client, myClient, rec)
116+
117+
cluster := newFakeCluster(myClient, "asd")
118+
backup := newFakeBackup("asd-backup", cluster.Name)
119+
backup.Status.Completed = true
120+
121+
ctx := context.TODO()
122+
err := controller.Sync(ctx, backup, namespace)
123+
if err != nil {
124+
fmt.Println("Sync err: ", err)
125+
t.Fail()
126+
}
127+
}
128+
129+
// TestBackupSyncNoClusterName
130+
// Test: backup without cluster name
131+
// Expect: sync to fail
132+
func TestBackupSyncNoClusterName(t *testing.T) {
133+
client := fake.NewSimpleClientset()
134+
myClient := fakeMyClient.NewSimpleClientset()
135+
rec := record.NewFakeRecorder(100)
136+
137+
stop := make(chan struct{})
138+
defer close(stop)
139+
controller := newController(stop, client, myClient, rec)
140+
141+
backup := newFakeBackup("asd-backup", "")
142+
backup.Status.Completed = true
143+
144+
ctx := context.TODO()
145+
err := controller.Sync(ctx, backup, namespace)
146+
if !strings.Contains(err.Error(), "cluster name is not specified") {
147+
t.Fail()
148+
}
149+
}

vendor/k8s.io/api/Godeps/Godeps.json

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/api/admissionregistration/v1beta1/types.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)