Merge pull request #1793 from dmcgowan/gc-add-container-test

metadata: add test for container as gc root
This commit is contained in:
Phil Estes 2017-11-22 21:36:05 -05:00 committed by GitHub
commit 4af5f65752
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,6 +26,8 @@ func TestGCRoots(t *testing.T) {
alters := []alterFunc{ alters := []alterFunc{
addImage("ns1", "image1", dgst(1), nil), addImage("ns1", "image1", dgst(1), nil),
addImage("ns1", "image2", dgst(2), labelmap(string(labelGCSnapRef)+"overlay", "sn2")), addImage("ns1", "image2", dgst(2), labelmap(string(labelGCSnapRef)+"overlay", "sn2")),
addContainer("ns1", "container1", "overlay", "sn4", nil),
addContainer("ns1", "container2", "overlay", "sn5", labelmap(string(labelGCSnapRef)+"overlay", "sn6")),
addContent("ns1", dgst(1), nil), addContent("ns1", dgst(1), nil),
addContent("ns1", dgst(2), nil), addContent("ns1", dgst(2), nil),
addContent("ns1", dgst(3), nil), addContent("ns1", dgst(3), nil),
@ -34,6 +36,9 @@ func TestGCRoots(t *testing.T) {
addSnapshot("ns1", "overlay", "sn1", "", nil), addSnapshot("ns1", "overlay", "sn1", "", nil),
addSnapshot("ns1", "overlay", "sn2", "", nil), addSnapshot("ns1", "overlay", "sn2", "", nil),
addSnapshot("ns1", "overlay", "sn3", "", labelmap(string(labelGCRoot), "always")), addSnapshot("ns1", "overlay", "sn3", "", labelmap(string(labelGCRoot), "always")),
addSnapshot("ns1", "overlay", "sn4", "", nil),
addSnapshot("ns1", "overlay", "sn5", "", nil),
addSnapshot("ns1", "overlay", "sn6", "", nil),
addLeaseSnapshot("ns2", "l1", "overlay", "sn5"), addLeaseSnapshot("ns2", "l1", "overlay", "sn5"),
addLeaseSnapshot("ns2", "l2", "overlay", "sn6"), addLeaseSnapshot("ns2", "l2", "overlay", "sn6"),
addLeaseContent("ns2", "l1", dgst(4)), addLeaseContent("ns2", "l1", dgst(4)),
@ -48,6 +53,9 @@ func TestGCRoots(t *testing.T) {
gcnode(ResourceContent, "ns2", dgst(5).String()), gcnode(ResourceContent, "ns2", dgst(5).String()),
gcnode(ResourceSnapshot, "ns1", "overlay/sn2"), gcnode(ResourceSnapshot, "ns1", "overlay/sn2"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn3"), gcnode(ResourceSnapshot, "ns1", "overlay/sn3"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn4"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn5"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn6"),
gcnode(ResourceSnapshot, "ns2", "overlay/sn5"), gcnode(ResourceSnapshot, "ns2", "overlay/sn5"),
gcnode(ResourceSnapshot, "ns2", "overlay/sn6"), gcnode(ResourceSnapshot, "ns2", "overlay/sn6"),
} }
@ -84,6 +92,7 @@ func TestGCRemove(t *testing.T) {
alters := []alterFunc{ alters := []alterFunc{
addImage("ns1", "image1", dgst(1), nil), addImage("ns1", "image1", dgst(1), nil),
addImage("ns1", "image2", dgst(2), labelmap(string(labelGCSnapRef)+"overlay", "sn2")), addImage("ns1", "image2", dgst(2), labelmap(string(labelGCSnapRef)+"overlay", "sn2")),
addContainer("ns1", "container1", "overlay", "sn4", nil),
addContent("ns1", dgst(1), nil), addContent("ns1", dgst(1), nil),
addContent("ns1", dgst(2), nil), addContent("ns1", dgst(2), nil),
addContent("ns1", dgst(3), nil), addContent("ns1", dgst(3), nil),
@ -92,6 +101,7 @@ func TestGCRemove(t *testing.T) {
addSnapshot("ns1", "overlay", "sn1", "", nil), addSnapshot("ns1", "overlay", "sn1", "", nil),
addSnapshot("ns1", "overlay", "sn2", "", nil), addSnapshot("ns1", "overlay", "sn2", "", nil),
addSnapshot("ns1", "overlay", "sn3", "", labelmap(string(labelGCRoot), "always")), addSnapshot("ns1", "overlay", "sn3", "", labelmap(string(labelGCRoot), "always")),
addSnapshot("ns1", "overlay", "sn4", "", nil),
addSnapshot("ns2", "overlay", "sn1", "", nil), addSnapshot("ns2", "overlay", "sn1", "", nil),
} }
@ -104,6 +114,7 @@ func TestGCRemove(t *testing.T) {
gcnode(ResourceSnapshot, "ns1", "overlay/sn1"), gcnode(ResourceSnapshot, "ns1", "overlay/sn1"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn2"), gcnode(ResourceSnapshot, "ns1", "overlay/sn2"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn3"), gcnode(ResourceSnapshot, "ns1", "overlay/sn3"),
gcnode(ResourceSnapshot, "ns1", "overlay/sn4"),
gcnode(ResourceSnapshot, "ns2", "overlay/sn1"), gcnode(ResourceSnapshot, "ns2", "overlay/sn1"),
} }
@ -402,6 +413,22 @@ func addLeaseContent(ns, lid string, dgst digest.Digest) alterFunc {
} }
} }
func addContainer(ns, name, snapshotter, snapshot string, labels map[string]string) alterFunc {
return func(bkt *bolt.Bucket) error {
cbkt, err := createBuckets(bkt, ns, string(bucketKeyObjectContainers), name)
if err != nil {
return err
}
if err := cbkt.Put(bucketKeySnapshotter, []byte(snapshotter)); err != nil {
return err
}
if err := cbkt.Put(bucketKeySnapshotKey, []byte(snapshot)); err != nil {
return err
}
return boltutil.WriteLabels(cbkt, labels)
}
}
func createBuckets(bkt *bolt.Bucket, names ...string) (*bolt.Bucket, error) { func createBuckets(bkt *bolt.Bucket, names ...string) (*bolt.Bucket, error) {
for _, name := range names { for _, name := range names {
nbkt, err := bkt.CreateBucketIfNotExists([]byte(name)) nbkt, err := bkt.CreateBucketIfNotExists([]byte(name))