(t *testing.T)
| 120 | } |
| 121 | |
| 122 | func TestRestoreHandler(t *testing.T) { |
| 123 | ctrl, client := newTestController() |
| 124 | sgName := "foo" |
| 125 | sgNamespace := "default" |
| 126 | sg := newSnapshotGroup(sgName, sgNamespace) |
| 127 | snaps, err := snapshots.ListSnapshots(sg) |
| 128 | assert.NoError(t, err) |
| 129 | assert.Equal(t, 0, len(snaps)) |
| 130 | |
| 131 | _, err = client.SnapshotGroupClient.SnapshotGroups(sgNamespace).Create(context.Background(), sg, metav1.CreateOptions{}) |
| 132 | assert.NoError(t, err) |
| 133 | |
| 134 | event := workItem{ |
| 135 | name: sgName, |
| 136 | namespace: sgNamespace, |
| 137 | snapshotGroup: sg, |
| 138 | task: backupTask, |
| 139 | } |
| 140 | err = ctrl.syncHandler(event) |
| 141 | assert.NoError(t, err) |
| 142 | |
| 143 | snaps, err = snapshots.ListSnapshots(sg) |
| 144 | assert.NoError(t, err) |
| 145 | assert.Equal(t, 1, len(snaps)) |
| 146 | assert.Equal(t, []string{"1 second"}, snaps[0].Intervals) |
| 147 | |
| 148 | pvcClient := client.K8s.CoreV1().PersistentVolumeClaims(sg.ObjectMeta.Namespace) |
| 149 | pvc, err := pvcClient.Get(context.TODO(), sg.ObjectMeta.Name, metav1.GetOptions{}) |
| 150 | assert.NoError(t, err) |
| 151 | assert.Equal(t, "gemini", pvc.ObjectMeta.Annotations["app.kubernetes.io/managed-by"]) |
| 152 | assert.Equal(t, "", pvc.ObjectMeta.Annotations["gemini.fairwinds.com/restore"]) |
| 153 | |
| 154 | time.Sleep(time.Second) |
| 155 | timestamp := strconv.Itoa(int(snaps[0].Timestamp.Unix())) |
| 156 | sg.ObjectMeta.Annotations["gemini.fairwinds.com/restore"] = timestamp |
| 157 | event.task = restoreTask |
| 158 | err = ctrl.syncHandler(event) |
| 159 | assert.NoError(t, err) |
| 160 | |
| 161 | pvc, err = pvcClient.Get(context.TODO(), sg.ObjectMeta.Name, metav1.GetOptions{}) |
| 162 | assert.NoError(t, err) |
| 163 | assert.Equal(t, "gemini", pvc.ObjectMeta.Annotations["app.kubernetes.io/managed-by"]) |
| 164 | assert.Equal(t, timestamp, pvc.ObjectMeta.Annotations["gemini.fairwinds.com/restore"]) |
| 165 | |
| 166 | snaps, err = snapshots.ListSnapshots(sg) |
| 167 | assert.NoError(t, err) |
| 168 | assert.Equal(t, 2, len(snaps)) |
| 169 | assert.Equal(t, []string{"1 second"}, snaps[1].Intervals) |
| 170 | assert.Equal(t, []string{}, snaps[0].Intervals) |
| 171 | } |
| 172 | |
| 173 | func TestDeleteHandler(t *testing.T) { |
| 174 | ctrl, _ := newTestController() |
nothing calls this directly
no test coverage detected