@@ -17,168 +17,186 @@ limitations under the License.
1717package goosefs
1818
1919import (
20- "testing"
20+ . "github.com/onsi/ginkgo/v2"
21+ . "github.com/onsi/gomega"
2122
2223 datav1alpha1 "github.com/fluid-cloudnative/fluid/api/v1alpha1"
2324 v1 "k8s.io/api/core/v1"
2425)
2526
26- func TestTransformDatasetToVolume (t * testing.T ) {
27- var ufsPath = UFSPath {}
28- ufsPath .Name = "test"
29- ufsPath .HostPath = "/mnt/test"
30- ufsPath .ContainerPath = "/underFSStorage/test"
31-
32- var ufsPath1 = UFSPath {}
33- ufsPath1 .Name = "test"
34- ufsPath1 .HostPath = "/mnt/test"
35- ufsPath1 .ContainerPath = "/underFSStorage"
36-
37- var tests = []struct {
38- runtime * datav1alpha1.GooseFSRuntime
39- dataset * datav1alpha1.Dataset
40- value * GooseFS
41- expect UFSPath
42- }{
43- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
44- Spec : datav1alpha1.DatasetSpec {
45- Mounts : []datav1alpha1.Mount {{
46- MountPoint : "local:///mnt/test" ,
47- Name : "test" ,
48- }},
49- },
50- }, & GooseFS {}, ufsPath },
51- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
52- Spec : datav1alpha1.DatasetSpec {
53- Mounts : []datav1alpha1.Mount {{
54- MountPoint : "local:///mnt/test" ,
55- Name : "test" ,
56- Path : "/" ,
57- }},
58- },
59- }, & GooseFS {}, ufsPath1 },
60- }
61- for _ , test := range tests {
62- engine := & GooseFSEngine {}
63- engine .transformDatasetToVolume (test .runtime , test .dataset , test .value )
64- if test .value .UFSPaths [0 ].HostPath != test .expect .HostPath ||
65- test .value .UFSPaths [0 ].ContainerPath != test .expect .ContainerPath {
66- t .Errorf ("expected %v, got %v" , test .expect , test .value .UFSPaths [0 ])
27+ var _ = Describe ("TransformDatasetToVolume" , Label ("pkg.ddc.goosefs.transform_ufs_test.go" ), func () {
28+ Describe ("with local mount" , func () {
29+ type testCase struct {
30+ runtime * datav1alpha1.GooseFSRuntime
31+ dataset * datav1alpha1.Dataset
32+ expectPath string
33+ expectHostPath string
6734 }
68- }
69- }
70-
71- func TestTransformDatasetToPVC (t * testing.T ) {
72- var ufsVolume = UFSVolume {}
73- ufsVolume .Name = "test"
74- ufsVolume .ContainerPath = "/underFSStorage/test"
7535
76- var ufsVolume1 = UFSVolume {}
77- ufsVolume1 .Name = "test1"
78- ufsVolume1 .ContainerPath = "/underFSStorage"
36+ DescribeTable ("should transform dataset to volume correctly" ,
37+ func (tc testCase ) {
38+ value := & GooseFS {}
39+ engine := & GooseFSEngine {}
40+ engine .transformDatasetToVolume (tc .runtime , tc .dataset , value )
7941
80- var ufsVolume2 = UFSVolume {}
81- ufsVolume2 .Name = "test2"
82- ufsVolume2 .SubPath = "subpath"
83- ufsVolume2 .ContainerPath = "/underFSStorage/test2"
84-
85- var ufsVolume3 = UFSVolume {}
86- ufsVolume3 .Name = "test3"
87- ufsVolume3 .SubPath = "subpath"
88- ufsVolume3 .ContainerPath = "/underFSStorage"
89-
90- var tests = []struct {
91- runtime * datav1alpha1.GooseFSRuntime
92- dataset * datav1alpha1.Dataset
93- value * GooseFS
94- expect UFSVolume
95- }{
96- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
97- Spec : datav1alpha1.DatasetSpec {
98- Mounts : []datav1alpha1.Mount {{
99- MountPoint : "pvc://test" ,
100- Name : "test" ,
101- }},
102- },
103- }, & GooseFS {}, ufsVolume },
104- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
105- Spec : datav1alpha1.DatasetSpec {
106- Mounts : []datav1alpha1.Mount {{
107- MountPoint : "pvc://test1" ,
108- Name : "test1" ,
109- Path : "/" ,
110- }},
111- },
112- }, & GooseFS {}, ufsVolume1 },
113- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
114- Spec : datav1alpha1.DatasetSpec {
115- Mounts : []datav1alpha1.Mount {{
116- MountPoint : "pvc://test2/subpath" ,
117- Name : "test2" ,
118- }},
42+ Expect (value .UFSPaths ).To (HaveLen (1 ))
43+ Expect (value .UFSPaths [0 ].HostPath ).To (Equal (tc .expectHostPath ))
44+ Expect (value .UFSPaths [0 ].ContainerPath ).To (Equal (tc .expectPath ))
11945 },
120- }, & GooseFS {}, ufsVolume2 },
121- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
122- Spec : datav1alpha1.DatasetSpec {
123- Mounts : []datav1alpha1.Mount {{
124- MountPoint : "pvc://test3/subpath" ,
125- Name : "test3" ,
126- Path : "/" ,
127- }},
128- },
129- }, & GooseFS {}, ufsVolume3 },
130- }
131- for _ , test := range tests {
132- engine := & GooseFSEngine {}
133- engine .transformDatasetToVolume (test .runtime , test .dataset , test .value )
134- if test .value .UFSVolumes [0 ].ContainerPath != test .expect .ContainerPath ||
135- test .value .UFSVolumes [0 ].Name != test .expect .Name ||
136- test .value .UFSVolumes [0 ].SubPath != test .expect .SubPath {
137- t .Errorf ("expected %v, got %v" , test .expect , test .value )
46+ Entry ("local mount without path" ,
47+ testCase {
48+ runtime : & datav1alpha1.GooseFSRuntime {},
49+ dataset : & datav1alpha1.Dataset {
50+ Spec : datav1alpha1.DatasetSpec {
51+ Mounts : []datav1alpha1.Mount {{
52+ MountPoint : "local:///mnt/test" ,
53+ Name : "test" ,
54+ }},
55+ },
56+ },
57+ expectPath : "/underFSStorage/test" ,
58+ expectHostPath : "/mnt/test" ,
59+ },
60+ ),
61+ Entry ("local mount with root path" ,
62+ testCase {
63+ runtime : & datav1alpha1.GooseFSRuntime {},
64+ dataset : & datav1alpha1.Dataset {
65+ Spec : datav1alpha1.DatasetSpec {
66+ Mounts : []datav1alpha1.Mount {{
67+ MountPoint : "local:///mnt/test" ,
68+ Name : "test" ,
69+ Path : "/" ,
70+ }},
71+ },
72+ },
73+ expectPath : "/underFSStorage" ,
74+ expectHostPath : "/mnt/test" ,
75+ },
76+ ),
77+ )
78+ })
79+
80+ Describe ("with PVC mount" , func () {
81+ type testCase struct {
82+ runtime * datav1alpha1.GooseFSRuntime
83+ dataset * datav1alpha1.Dataset
84+ expectName string
85+ expectPath string
86+ expectSubPath string
13887 }
139- }
140- }
14188
142- func TestTransformDatasetWithAffinity ( t * testing. T ) {
143- var ufsPath = UFSPath {}
144- ufsPath . Name = "test"
145- ufsPath . HostPath = "/mnt/test"
146- ufsPath . ContainerPath = "/opt/goosefs/underFSStorage/test"
89+ DescribeTable ( "should transform dataset to PVC correctly" ,
90+ func ( tc testCase ) {
91+ value := & GooseFS {}
92+ engine := & GooseFSEngine {}
93+ engine . transformDatasetToVolume ( tc . runtime , tc . dataset , value )
14794
148- var tests = []struct {
149- runtime * datav1alpha1.GooseFSRuntime
150- dataset * datav1alpha1.Dataset
151- value * GooseFS
152- expect UFSPath
153- }{
154- {& datav1alpha1.GooseFSRuntime {}, & datav1alpha1.Dataset {
155- Spec : datav1alpha1.DatasetSpec {
156- Mounts : []datav1alpha1.Mount {{
157- MountPoint : "local:///mnt/test" ,
158- Name : "test" ,
159- }},
160- NodeAffinity : & datav1alpha1.CacheableNodeAffinity {
161- Required : & v1.NodeSelector {
162- NodeSelectorTerms : []v1.NodeSelectorTerm {
163- {
164- MatchExpressions : []v1.NodeSelectorRequirement {
165- {
166- Operator : v1 .NodeSelectorOpIn ,
167- Values : []string {"test-label-value" },
95+ Expect (value .UFSVolumes ).To (HaveLen (1 ))
96+ Expect (value .UFSVolumes [0 ].Name ).To (Equal (tc .expectName ))
97+ Expect (value .UFSVolumes [0 ].ContainerPath ).To (Equal (tc .expectPath ))
98+ Expect (value .UFSVolumes [0 ].SubPath ).To (Equal (tc .expectSubPath ))
99+ },
100+ Entry ("PVC mount without path" ,
101+ testCase {
102+ runtime : & datav1alpha1.GooseFSRuntime {},
103+ dataset : & datav1alpha1.Dataset {
104+ Spec : datav1alpha1.DatasetSpec {
105+ Mounts : []datav1alpha1.Mount {{
106+ MountPoint : "pvc://test" ,
107+ Name : "test" ,
108+ }},
109+ },
110+ },
111+ expectName : "test" ,
112+ expectPath : "/underFSStorage/test" ,
113+ expectSubPath : "" ,
114+ },
115+ ),
116+ Entry ("PVC mount with root path" ,
117+ testCase {
118+ runtime : & datav1alpha1.GooseFSRuntime {},
119+ dataset : & datav1alpha1.Dataset {
120+ Spec : datav1alpha1.DatasetSpec {
121+ Mounts : []datav1alpha1.Mount {{
122+ MountPoint : "pvc://test1" ,
123+ Name : "test1" ,
124+ Path : "/" ,
125+ }},
126+ },
127+ },
128+ expectName : "test1" ,
129+ expectPath : "/underFSStorage" ,
130+ expectSubPath : "" ,
131+ },
132+ ),
133+ Entry ("PVC mount with subpath" ,
134+ testCase {
135+ runtime : & datav1alpha1.GooseFSRuntime {},
136+ dataset : & datav1alpha1.Dataset {
137+ Spec : datav1alpha1.DatasetSpec {
138+ Mounts : []datav1alpha1.Mount {{
139+ MountPoint : "pvc://test2/subpath" ,
140+ Name : "test2" ,
141+ }},
142+ },
143+ },
144+ expectName : "test2" ,
145+ expectPath : "/underFSStorage/test2" ,
146+ expectSubPath : "subpath" ,
147+ },
148+ ),
149+ Entry ("PVC mount with subpath and root path" ,
150+ testCase {
151+ runtime : & datav1alpha1.GooseFSRuntime {},
152+ dataset : & datav1alpha1.Dataset {
153+ Spec : datav1alpha1.DatasetSpec {
154+ Mounts : []datav1alpha1.Mount {{
155+ MountPoint : "pvc://test3/subpath" ,
156+ Name : "test3" ,
157+ Path : "/" ,
158+ }},
159+ },
160+ },
161+ expectName : "test3" ,
162+ expectPath : "/underFSStorage" ,
163+ expectSubPath : "subpath" ,
164+ },
165+ ),
166+ )
167+ })
168+
169+ Describe ("with node affinity" , func () {
170+ It ("should set master affinity from dataset" , func () {
171+ runtime := & datav1alpha1.GooseFSRuntime {}
172+ dataset := & datav1alpha1.Dataset {
173+ Spec : datav1alpha1.DatasetSpec {
174+ Mounts : []datav1alpha1.Mount {{
175+ MountPoint : "local:///mnt/test" ,
176+ Name : "test" ,
177+ }},
178+ NodeAffinity : & datav1alpha1.CacheableNodeAffinity {
179+ Required : & v1.NodeSelector {
180+ NodeSelectorTerms : []v1.NodeSelectorTerm {
181+ {
182+ MatchExpressions : []v1.NodeSelectorRequirement {
183+ {
184+ Operator : v1 .NodeSelectorOpIn ,
185+ Values : []string {"test-label-value" },
186+ },
168187 },
169188 },
170189 },
171190 },
172191 },
173192 },
174- },
175- }, & GooseFS {}, ufsPath },
176- }
177- for _ , test := range tests {
178- engine := & GooseFSEngine {}
179- engine .transformDatasetToVolume (test .runtime , test .dataset , test .value )
180- if test .value .Master .Affinity .NodeAffinity == nil {
181- t .Error ("The master affinity is nil" )
182- }
183- }
184- }
193+ }
194+ value := & GooseFS {}
195+
196+ engine := & GooseFSEngine {}
197+ engine .transformDatasetToVolume (runtime , dataset , value )
198+
199+ Expect (value .Master .Affinity .NodeAffinity ).NotTo (BeNil ())
200+ })
201+ })
202+ })
0 commit comments