github.com/toplink-cn/moby@v0.0.0-20240305205811-460b4aebdf81/layer/layer_unix_test.go (about) 1 //go:build !windows 2 3 package layer // import "github.com/docker/docker/layer" 4 5 import ( 6 "testing" 7 ) 8 9 func graphDiffSize(ls Store, l Layer) (int64, error) { 10 cl := getCachedLayer(l) 11 var parent string 12 if cl.parent != nil { 13 parent = cl.parent.cacheID 14 } 15 return ls.(*layerStore).driver.DiffSize(cl.cacheID, parent) 16 } 17 18 // Unix as Windows graph driver does not support Changes which is indirectly 19 // invoked by calling DiffSize on the driver 20 func TestLayerSize(t *testing.T) { 21 ls, _, cleanup := newTestStore(t) 22 defer cleanup() 23 24 content1 := []byte("Base contents") 25 content2 := []byte("Added contents") 26 27 layer1, err := createLayer(ls, "", initWithFiles(newTestFile("file1", content1, 0o644))) 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 layer2, err := createLayer(ls, layer1.ChainID(), initWithFiles(newTestFile("file2", content2, 0o644))) 33 if err != nil { 34 t.Fatal(err) 35 } 36 37 layer1DiffSize, err := graphDiffSize(ls, layer1) 38 if err != nil { 39 t.Fatal(err) 40 } 41 42 if int(layer1DiffSize) != len(content1) { 43 t.Fatalf("Unexpected diff size %d, expected %d", layer1DiffSize, len(content1)) 44 } 45 46 layer1Size := layer1.Size() 47 if expected := len(content1); int(layer1Size) != expected { 48 t.Fatalf("Unexpected size %d, expected %d", layer1Size, expected) 49 } 50 51 layer2DiffSize, err := graphDiffSize(ls, layer2) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 if int(layer2DiffSize) != len(content2) { 57 t.Fatalf("Unexpected diff size %d, expected %d", layer2DiffSize, len(content2)) 58 } 59 60 layer2Size := layer2.Size() 61 62 if expected := len(content1) + len(content2); int(layer2Size) != expected { 63 t.Fatalf("Unexpected size %d, expected %d", layer2Size, expected) 64 } 65 }