@@ -21,6 +21,7 @@ import (
2121 "testing"
2222 "time"
2323
24+ "k8s.io/api/core/v1"
2425 storagev1beta1 "k8s.io/api/storage/v1beta1"
2526 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627)
@@ -40,8 +41,7 @@ var volumeErr = &storagev1beta1.VolumeError{
4041// controllerTest.testCall *once*.
4142// 3. Compare resulting contents and snapshots with expected contents and snapshots.
4243func TestSync (t * testing.T ) {
43- // TODO FIXME
44- _ = []controllerTest {
44+ tests := []controllerTest {
4545 {
4646 // snapshot is bound to a non-existing content
4747 name : "2-1 - snapshot is bound to a non-existing content" ,
@@ -63,20 +63,26 @@ func TestSync(t *testing.T) {
6363 errors : noerrors ,
6464 test : testSyncSnapshotError ,
6565 },
66- /* TODO FIXME
6766 {
68- name: "2-3 - success bind snapshot and content, no status changed",
67+ name : "2-3 - success bind snapshot and content but not ready , no status changed" ,
6968 initialContents : newContentArray ("content2-3" , validSecretClass , "sid2-3" , "vuid2-3" , "volume2-3" , "" , "snap2-3" , & deletePolicy , nil , nil ),
7069 expectedContents : newContentArray ("content2-3" , validSecretClass , "sid2-3" , "vuid2-3" , "volume2-3" , "snapuid2-3" , "snap2-3" , & deletePolicy , nil , nil ),
7170 initialSnapshots : newSnapshotArray ("snap2-3" , validSecretClass , "content2-3" , "snapuid2-3" , "claim2-3" , false , nil , metaTimeNow , nil ),
7271 expectedSnapshots : newSnapshotArray ("snap2-3" , validSecretClass , "content2-3" , "snapuid2-3" , "claim2-3" , false , nil , metaTimeNow , nil ),
73- expectedListCalls: []listCall{
72+ initialClaims : newClaimArray ("claim2-3" , "pvc-uid2-3" , "1Gi" , "volume2-3" , v1 .ClaimBound , & classEmpty ),
73+ initialVolumes : newVolumeArray ("volume2-3" , "pv-uid2-3" , "pv-handle2-3" , "1Gi" , "pvc-uid2-3" , "claim2-3" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
74+ initialSecrets : []* v1.Secret {secret ()},
75+ expectedCreateCalls : []createCall {
7476 {
75- snapshotID: "sid2-3",
76- status: &csi.SnapshotStatus{
77- Type: csi.SnapshotStatus_UPLOADING,
78- Details: "uploading",
79- },
77+ snapshotName : "snapshot-snapuid2-3" ,
78+ volume : newVolume ("volume2-3" , "pv-uid2-3" , "pv-handle2-3" , "1Gi" , "pvc-uid2-3" , "claim2-3" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
79+ parameters : class5Parameters ,
80+ secrets : map [string ]string {"foo" : "bar" },
81+ // information to return
82+ driverName : mockDriverName ,
83+ snapshotId : "sid2-3" ,
84+ timestamp : timeNow ,
85+ readyToUse : false ,
8086 },
8187 },
8288 errors : noerrors ,
@@ -87,89 +93,81 @@ func TestSync(t *testing.T) {
8793 name : "2-4 - noop" ,
8894 initialContents : newContentArray ("content2-4" , validSecretClass , "sid2-4" , "vuid2-4" , "volume2-4" , "snapuid2-4" , "snap2-4" , & deletePolicy , nil , nil ),
8995 expectedContents : newContentArray ("content2-4" , validSecretClass , "sid2-4" , "vuid2-4" , "volume2-4" , "snapuid2-4" , "snap2-4" , & deletePolicy , nil , nil ),
90- initialSnapshots: newSnapshotArray("snap2-4", validSecretClass, "content2-4", "snapuid2-4", "claim2-4", false, nil, metaTimeNow, nil),
91- expectedSnapshots: newSnapshotArray("snap2-4", validSecretClass, "content2-4", "snapuid2-4", "claim2-4", false, nil, metaTimeNow, nil),
92- expectedListCalls: []listCall{
93- {
94- snapshotID: "sid2-4",
95- status: &csi.SnapshotStatus{
96- Type: csi.SnapshotStatus_UPLOADING,
97- Details: "uploading",
98- },
99- },
100- },
101- errors: noerrors,
102- test: testSyncSnapshot,
96+ initialSnapshots : newSnapshotArray ("snap2-4" , validSecretClass , "content2-4" , "snapuid2-4" , "claim2-4" , true , nil , metaTimeNow , nil ),
97+ expectedSnapshots : newSnapshotArray ("snap2-4" , validSecretClass , "content2-4" , "snapuid2-4" , "claim2-4" , true , nil , metaTimeNow , nil ),
98+ errors : noerrors ,
99+ test : testSyncSnapshot ,
103100 },
104101 {
105102 name : "2-5 - snapshot and content bound, status ready false -> true" ,
106103 initialContents : newContentArray ("content2-5" , validSecretClass , "sid2-5" , "vuid2-5" , "volume2-5" , "snapuid2-5" , "snap2-5" , & deletePolicy , nil , nil ),
107104 expectedContents : newContentArray ("content2-5" , validSecretClass , "sid2-5" , "vuid2-5" , "volume2-5" , "snapuid2-5" , "snap2-5" , & deletePolicy , nil , nil ),
108105 initialSnapshots : newSnapshotArray ("snap2-5" , validSecretClass , "content2-5" , "snapuid2-5" , "claim2-5" , false , nil , metaTimeNow , nil ),
109106 expectedSnapshots : newSnapshotArray ("snap2-5" , validSecretClass , "content2-5" , "snapuid2-5" , "claim2-5" , true , nil , metaTimeNow , nil ),
110- expectedListCalls: []listCall{
107+ initialClaims : newClaimArray ("claim2-5" , "pvc-uid2-5" , "1Gi" , "volume2-5" , v1 .ClaimBound , & classEmpty ),
108+ initialVolumes : newVolumeArray ("volume2-5" , "pv-uid2-5" , "pv-handle2-5" , "1Gi" , "pvc-uid2-5" , "claim2-5" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
109+ initialSecrets : []* v1.Secret {secret ()},
110+ expectedCreateCalls : []createCall {
111111 {
112- snapshotID: "sid2-5",
113- status: &csi.SnapshotStatus{
114- Type: csi.SnapshotStatus_READY,
115- Details: "success",
116- },
112+ snapshotName : "snapshot-snapuid2-5" ,
113+ volume : newVolume ("volume2-5" , "pv-uid2-5" , "pv-handle2-5" , "1Gi" , "pvc-uid2-5" , "claim2-5" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
114+ parameters : class5Parameters ,
115+ secrets : map [string ]string {"foo" : "bar" },
116+ // information to return
117+ driverName : mockDriverName ,
118+ snapshotId : "sid2-5" ,
119+ timestamp : timeNow ,
120+ readyToUse : true ,
117121 },
118122 },
119123 errors : noerrors ,
120124 test : testSyncSnapshot ,
121125 },
122- {
123- name: "2-6 - snapshot and content bound, status -> error uploading",
124- initialContents: newContentArray("content2-6", validSecretClass, "sid2-6", "vuid2-6", "volume2-6", "snapuid2-6", "snap2-6", &deletePolicy, nil, nil),
125- expectedContents: newContentArray("content2-6", validSecretClass, "sid2-6", "vuid2-6", "volume2-6", "snapuid2-6", "snap2-6", &deletePolicy, nil, nil),
126- initialSnapshots: newSnapshotArray("snap2-6", validSecretClass, "content2-6", "snapuid2-6", "claim2-6", false, nil, metaTimeNow, nil),
127- expectedSnapshots: newSnapshotArray("snap2-6", validSecretClass, "content2-6", "snapuid2-6", "claim2-6", false, volumeErr, metaTimeNow, nil),
128- expectedEvents: []string{"Warning SnapshotUploadError"},
129- expectedListCalls: []listCall{
130- {
131- snapshotID: "sid2-6",
132- status: &csi.SnapshotStatus{
133- Type: csi.SnapshotStatus_ERROR_UPLOADING,
134- Details: "error upload",
135- },
136- },
137- },
138- errors: noerrors,
139- test: testSyncSnapshot,
140- },
141- */
142126 {
143127 name : "2-7 - snapshot and content bound, csi driver get status error" ,
144128 initialContents : newContentArray ("content2-7" , validSecretClass , "sid2-7" , "vuid2-7" , "volume2-7" , "snapuid2-7" , "snap2-7" , & deletePolicy , nil , nil ),
145129 expectedContents : newContentArray ("content2-7" , validSecretClass , "sid2-7" , "vuid2-7" , "volume2-7" , "snapuid2-7" , "snap2-7" , & deletePolicy , nil , nil ),
146130 initialSnapshots : newSnapshotArray ("snap2-7" , validSecretClass , "content2-7" , "snapuid2-7" , "claim2-7" , false , nil , metaTimeNow , nil ),
147- expectedSnapshots : newSnapshotArray ("snap2-7" , validSecretClass , "content2-7" , "snapuid2-7" , "claim2-7" , false , newVolumeError ("Failed to check and update snapshot: failed to check snapshot status snap2-7 with error failed to list snapshot data content2-7: \" mock driver get status error \" " ), metaTimeNow , nil ),
131+ expectedSnapshots : newSnapshotArray ("snap2-7" , validSecretClass , "content2-7" , "snapuid2-7" , "claim2-7" , false , newVolumeError ("Failed to check and update snapshot: mock create snapshot error" ), metaTimeNow , nil ),
148132 expectedEvents : []string {"Warning SnapshotCheckandUpdateFailed" },
149- expectedListCalls : []listCall {
133+ initialClaims : newClaimArray ("claim2-7" , "pvc-uid2-7" , "1Gi" , "volume2-7" , v1 .ClaimBound , & classEmpty ),
134+ initialVolumes : newVolumeArray ("volume2-7" , "pv-uid2-7" , "pv-handle2-7" , "1Gi" , "pvc-uid2-7" , "claim2-7" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
135+ initialSecrets : []* v1.Secret {secret ()},
136+ expectedCreateCalls : []createCall {
150137 {
151- snapshotID : "sid2-7" ,
152- err : errors .New ("mock driver get status error" ),
138+ snapshotName : "snapshot-snapuid2-7" ,
139+ volume : newVolume ("volume2-7" , "pv-uid2-7" , "pv-handle2-7" , "1Gi" , "pvc-uid2-7" , "claim2-7" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
140+ parameters : class5Parameters ,
141+ secrets : map [string ]string {"foo" : "bar" },
142+ // information to return
143+ err : errors .New ("mock create snapshot error" ),
153144 },
154145 },
155146 errors : noerrors ,
156147 test : testSyncSnapshot ,
157148 },
158- /* TODO FIXME
159149 {
160150 name : "2-8 - snapshot and content bound, apiserver update status error" ,
161151 initialContents : newContentArray ("content2-8" , validSecretClass , "sid2-8" , "vuid2-8" , "volume2-8" , "snapuid2-8" , "snap2-8" , & deletePolicy , nil , nil ),
162152 expectedContents : newContentArray ("content2-8" , validSecretClass , "sid2-8" , "vuid2-8" , "volume2-8" , "snapuid2-8" , "snap2-8" , & deletePolicy , nil , nil ),
163153 initialSnapshots : newSnapshotArray ("snap2-8" , validSecretClass , "content2-8" , "snapuid2-8" , "claim2-8" , false , nil , metaTimeNow , nil ),
164154 expectedSnapshots : newSnapshotArray ("snap2-8" , validSecretClass , "content2-8" , "snapuid2-8" , "claim2-8" , false , newVolumeError ("Failed to check and update snapshot: snapshot controller failed to update default/snap2-8 on API server: mock update error" ), metaTimeNow , nil ),
165- expectedEvents: []string{"Warning SnapshotUploadError"},
166- expectedListCalls: []listCall{
155+ expectedEvents : []string {"Warning SnapshotCheckandUpdateFailed" },
156+ initialClaims : newClaimArray ("claim2-8" , "pvc-uid2-8" , "1Gi" , "volume2-8" , v1 .ClaimBound , & classEmpty ),
157+ initialVolumes : newVolumeArray ("volume2-8" , "pv-uid2-8" , "pv-handle2-8" , "1Gi" , "pvc-uid2-8" , "claim2-8" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
158+ initialSecrets : []* v1.Secret {secret ()},
159+ expectedCreateCalls : []createCall {
167160 {
168- snapshotID: "sid2-8",
169- status: &csi.SnapshotStatus{
170- Type: csi.SnapshotStatus_ERROR_UPLOADING,
171- Details: "error upload",
172- },
161+ snapshotName : "snapshot-snapuid2-8" ,
162+ volume : newVolume ("volume2-8" , "pv-uid2-8" , "pv-handle2-8" , "1Gi" , "pvc-uid2-8" , "claim2-8" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
163+ parameters : class5Parameters ,
164+ secrets : map [string ]string {"foo" : "bar" },
165+ // information to return
166+ driverName : mockDriverName ,
167+ size : defaultSize ,
168+ snapshotId : "sid2-8" ,
169+ timestamp : timeNow ,
170+ readyToUse : true ,
173171 },
174172 },
175173 errors : []reactorError {
@@ -179,7 +177,6 @@ func TestSync(t *testing.T) {
179177 },
180178 test : testSyncSnapshot ,
181179 },
182- */
183180 {
184181 name : "2-9 - bind when snapshot and content matches" ,
185182 initialContents : newContentArray ("content2-9" , validSecretClass , "sid2-9" , "vuid2-9" , "volume2-9" , "snapuid2-9" , "snap2-9" , & deletePolicy , nil , nil ),
@@ -258,6 +255,5 @@ func TestSync(t *testing.T) {
258255 },
259256 }
260257
261- // TODO FIXME
262- // runSyncTests(t, tests, snapshotClasses)
258+ runSyncTests (t , tests , snapshotClasses )
263259}
0 commit comments