layer_unix_test.go 1.6 KB

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