layer_unix_test.go 1.6 KB

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