From 8660330173e5053e274cf12860079f132cbaa9fa Mon Sep 17 00:00:00 2001 From: Olli Janatuinen Date: Sat, 10 Aug 2019 14:48:47 +0300 Subject: [PATCH] Unit test for getOrphan Signed-off-by: Olli Janatuinen --- layer/filestore_test.go | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/layer/filestore_test.go b/layer/filestore_test.go index 498379e37f..878dc54e36 100644 --- a/layer/filestore_test.go +++ b/layer/filestore_test.go @@ -10,6 +10,7 @@ import ( "syscall" "testing" + "github.com/docker/docker/pkg/stringid" "github.com/opencontainers/go-digest" ) @@ -102,3 +103,50 @@ func TestStartTransactionFailure(t *testing.T) { t.Fatal(err) } } + +func TestGetOrphan(t *testing.T) { + fms, td, cleanup := newFileMetadataStore(t) + defer cleanup() + + layerRoot := filepath.Join(td, "sha256") + if err := os.MkdirAll(layerRoot, 0755); err != nil { + t.Fatal(err) + } + + tx, err := fms.StartTransaction() + if err != nil { + t.Fatal(err) + } + + layerid := randomLayerID(5) + err = tx.Commit(layerid) + if err != nil { + t.Fatal(err) + } + layerPath := fms.getLayerDirectory(layerid) + if err := ioutil.WriteFile(filepath.Join(layerPath, "cache-id"), []byte(stringid.GenerateRandomID()), 0644); err != nil { + t.Fatal(err) + } + + orphanLayers, err := fms.getOrphan() + if err != nil { + t.Fatal(err) + } + if len(orphanLayers) != 0 { + t.Fatalf("Expected to have zero orphan layers") + } + + layeridSplit := strings.Split(layerid.String(), ":") + newPath := filepath.Join(layerRoot, fmt.Sprintf("%s-%s-removing", layeridSplit[1], stringid.GenerateRandomID())) + err = os.Rename(layerPath, newPath) + if err != nil { + t.Fatal(err) + } + orphanLayers, err = fms.getOrphan() + if err != nil { + t.Fatal(err) + } + if len(orphanLayers) != 1 { + t.Fatalf("Expected to have one orphan layer") + } +}