Skip to content

Commit 184a76f

Browse files
committed
wip
Signed-off-by: Yuji Ito <llamerada.jp@gmail.com>
1 parent e55a557 commit 184a76f

3 files changed

Lines changed: 216 additions & 0 deletions

File tree

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ vet: ## Run go vet against code.
8181

8282
.PHONY: mock
8383
mock: mockgen
84+
$(MOCKGEN) -source=internal/ceph/ceph.go -destination=internal/ceph/ceph_mock.go -package=ceph
8485
$(MOCKGEN) -source=internal/ceph/command.go -destination=internal/ceph/command_mock.go -package=ceph
8586
$(MOCKGEN) -source=pkg/controller/proto/controller_grpc.pb.go -destination=pkg/controller/proto/controller_grpc.pb_mock.go -package=proto
8687
$(MOCKGEN) -source=internal/controller/internal/objectstorage/objectstorage.go -destination=internal/controller/internal/objectstorage/objectstorage_mock.go -package=objectstorage

internal/ceph/ceph_mock.go

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

internal/controller/util_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,61 @@
11
package controller
22

33
import (
4+
"github.com/cybozu-go/mantle/internal/ceph"
45
"github.com/cybozu-go/mantle/test/util"
56
. "github.com/onsi/ginkgo/v2"
67
. "github.com/onsi/gomega"
8+
"go.uber.org/mock/gomock"
79
corev1 "k8s.io/api/core/v1"
810
storagev1 "k8s.io/api/storage/v1"
911
"k8s.io/apimachinery/pkg/api/resource"
1012
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1113
)
1214

15+
var _ = Describe("util.createCloneByPV", func() {
16+
DescribeTable("matrix test",
17+
func(ctx SpecContext,
18+
pv *corev1.PersistentVolume, snapshotName, cloneName string, // arguments
19+
lsIsCalled bool, lsPool string, images []string, // for RBDLs
20+
infoIsCalled bool, infoPool, infoImage string, info *ceph.RBDImageInfo, // for RBDInfo
21+
cloneIsCalled bool, clonePool, cloneImage, cloneFeatures string, // for RBDClone
22+
expectedErr bool) {
23+
ctrl := gomock.NewController(GinkgoT())
24+
defer ctrl.Finish()
25+
26+
cmdMock := ceph.NewMockCephCmd(ctrl)
27+
if lsIsCalled {
28+
cmdMock.EXPECT().RBDLs(lsPool).Return(images, nil)
29+
}
30+
if infoIsCalled {
31+
cmdMock.EXPECT().RBDInfo(infoPool, infoImage).Return(info, nil)
32+
}
33+
if cloneIsCalled {
34+
cmdMock.EXPECT().RBDClone(clonePool, cloneImage, snapshotName, cloneName, cloneFeatures).Return(nil)
35+
}
36+
createCloneByPV(ctx, cmdMock, pv, snapshotName, cloneName)
37+
},
38+
Entry("clone does not exist, create clone",
39+
&corev1.PersistentVolume{
40+
Spec: corev1.PersistentVolumeSpec{
41+
PersistentVolumeSource: corev1.PersistentVolumeSource{
42+
CSI: &corev1.CSIPersistentVolumeSource{
43+
VolumeAttributes: map[string]string{
44+
"imageName": "bkImage",
45+
"pool": "bkPool",
46+
},
47+
},
48+
},
49+
},
50+
},
51+
true, "bkPool", []string{"bkImage"},
52+
false, "", "", nil,
53+
true, "bkPool", "bkImage", "deep-flatten",
54+
false,
55+
),
56+
)
57+
})
58+
1359
var _ = Describe("util.getCephClusterIDFromPVC", func() {
1460
var namespace string
1561
storageClassName := util.GetUniqueName("sc-")

0 commit comments

Comments
 (0)