(t *testing.T)
| 174 | } |
| 175 | |
| 176 | func TestGCRemove(t *testing.T) { |
| 177 | db, err := newDatabase(t) |
| 178 | require.NoError(t, err) |
| 179 | |
| 180 | alters := []alterFunc{ |
| 181 | addImage("ns1", "image1", dgst(1), nil), |
| 182 | addImage("ns1", "image2", dgst(2), labelmap(string(labelGCSnapRef)+"overlay", "sn2")), |
| 183 | addContainer("ns1", "container1", "overlay", "sn4", nil), |
| 184 | addContent("ns1", dgst(1), nil), |
| 185 | addContent("ns1", dgst(2), nil), |
| 186 | addContent("ns1", dgst(3), nil), |
| 187 | addContent("ns2", dgst(1), nil), |
| 188 | addContent("ns2", dgst(2), labelmap(string(labelGCRoot), "always")), |
| 189 | addIngest("ns1", "ingest-1", "", nil), |
| 190 | addIngest("ns2", "ingest-2", "", timeIn(0)), |
| 191 | addSnapshot("ns1", "overlay", "sn1", "", nil), |
| 192 | addSnapshot("ns1", "overlay", "sn2", "", nil), |
| 193 | addSnapshot("ns1", "overlay", "sn3", "", labelmap(string(labelGCRoot), "always")), |
| 194 | addSnapshot("ns1", "overlay", "sn4", "", nil), |
| 195 | addSnapshot("ns2", "overlay", "sn1", "", nil), |
| 196 | addLease("ns1", "l1", labelmap(string(labelGCExpire), time.Now().Add(time.Hour).Format(time.RFC3339))), |
| 197 | addLease("ns2", "l2", labelmap(string(labelGCExpire), time.Now().Format(time.RFC3339))), |
| 198 | } |
| 199 | |
| 200 | all := []gc.Node{ |
| 201 | gcnode(ResourceContent, "ns1", dgst(1).String()), |
| 202 | gcnode(ResourceContent, "ns1", dgst(2).String()), |
| 203 | gcnode(ResourceContent, "ns1", dgst(3).String()), |
| 204 | gcnode(ResourceContent, "ns2", dgst(1).String()), |
| 205 | gcnode(ResourceContent, "ns2", dgst(2).String()), |
| 206 | gcnode(ResourceSnapshot, "ns1", "overlay/sn1"), |
| 207 | gcnode(ResourceSnapshot, "ns1", "overlay/sn2"), |
| 208 | gcnode(ResourceSnapshot, "ns1", "overlay/sn3"), |
| 209 | gcnode(ResourceSnapshot, "ns1", "overlay/sn4"), |
| 210 | gcnode(ResourceSnapshot, "ns2", "overlay/sn1"), |
| 211 | gcnode(ResourceImage, "ns1", "image1"), |
| 212 | gcnode(ResourceImage, "ns1", "image2"), |
| 213 | gcnode(ResourceLease, "ns1", "l1"), |
| 214 | gcnode(ResourceLease, "ns2", "l2"), |
| 215 | gcnode(ResourceIngest, "ns1", "ingest-1"), |
| 216 | gcnode(ResourceIngest, "ns2", "ingest-2"), |
| 217 | } |
| 218 | |
| 219 | var deleted, remaining []gc.Node |
| 220 | for i, n := range all { |
| 221 | if i%2 == 0 { |
| 222 | deleted = append(deleted, n) |
| 223 | } else { |
| 224 | remaining = append(remaining, n) |
| 225 | } |
| 226 | } |
| 227 | |
| 228 | if err := db.Update(func(tx *bolt.Tx) error { |
| 229 | v1bkt, err := tx.CreateBucketIfNotExists(bucketKeyVersion) |
| 230 | if err != nil { |
| 231 | return err |
| 232 | } |
| 233 | for _, alter := range alters { |
nothing calls this directly
no test coverage detected
searching dependent graphs…