layers_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package fs
  2. import (
  3. "github.com/dotcloud/docker/fake"
  4. "io/ioutil"
  5. "os"
  6. "testing"
  7. )
  8. func TestLayersInit(t *testing.T) {
  9. store := tempStore(t)
  10. defer os.RemoveAll(store.Root)
  11. // Root should exist
  12. if _, err := os.Stat(store.Root); err != nil {
  13. t.Fatal(err)
  14. }
  15. // List() should be empty
  16. if l := store.List(); len(l) != 0 {
  17. t.Fatalf("List() should return %d, not %d", 0, len(l))
  18. }
  19. }
  20. func TestAddLayer(t *testing.T) {
  21. store := tempStore(t)
  22. defer os.RemoveAll(store.Root)
  23. layer, err := store.AddLayer("foo", testArchive(t))
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. // Layer path should exist
  28. if _, err := os.Stat(layer); err != nil {
  29. t.Fatal(err)
  30. }
  31. // List() should return 1 layer
  32. if l := store.List(); len(l) != 1 {
  33. t.Fatalf("List() should return %d elements, not %d", 1, len(l))
  34. }
  35. // Get("foo") should return the correct layer
  36. if foo := store.Get("foo"); foo != layer {
  37. t.Fatalf("get(\"foo\") should return '%d', not '%d'", layer, foo)
  38. }
  39. }
  40. func TestAddLayerDuplicate(t *testing.T) {
  41. store := tempStore(t)
  42. defer os.RemoveAll(store.Root)
  43. if _, err := store.AddLayer("foobar123", testArchive(t)); err != nil {
  44. t.Fatal(err)
  45. }
  46. if _, err := store.AddLayer("foobar123", testArchive(t)); err == nil {
  47. t.Fatalf("Creating duplicate layer should fail")
  48. }
  49. }
  50. /*
  51. * HELPER FUNCTIONS
  52. */
  53. func tempStore(t *testing.T) *LayerStore {
  54. tmp, err := ioutil.TempDir("", "docker-fs-layerstore-")
  55. if err != nil {
  56. t.Fatal(err)
  57. }
  58. store, err := NewLayerStore(tmp)
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. return store
  63. }
  64. func testArchive(t *testing.T) Archive {
  65. archive, err := fake.FakeTar()
  66. if err != nil {
  67. t.Fatal(err)
  68. }
  69. return archive
  70. }