v1_id_service_test.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package metadata
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "testing"
  6. "github.com/docker/docker/layer"
  7. )
  8. func TestV1IDService(t *testing.T) {
  9. tmpDir, err := ioutil.TempDir("", "v1-id-service-test")
  10. if err != nil {
  11. t.Fatalf("could not create temp dir: %v", err)
  12. }
  13. defer os.RemoveAll(tmpDir)
  14. metadataStore, err := NewFSMetadataStore(tmpDir)
  15. if err != nil {
  16. t.Fatalf("could not create metadata store: %v", err)
  17. }
  18. v1IDService := NewV1IDService(metadataStore)
  19. testVectors := []struct {
  20. registry string
  21. v1ID string
  22. layerID layer.DiffID
  23. }{
  24. {
  25. registry: "registry1",
  26. v1ID: "f0cd5ca10b07f35512fc2f1cbf9a6cefbdb5cba70ac6b0c9e5988f4497f71937",
  27. layerID: layer.DiffID("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"),
  28. },
  29. {
  30. registry: "registry2",
  31. v1ID: "9e3447ca24cb96d86ebd5960cb34d1299b07e0a0e03801d90b9969a2c187dd6e",
  32. layerID: layer.DiffID("sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa"),
  33. },
  34. {
  35. registry: "registry1",
  36. v1ID: "9e3447ca24cb96d86ebd5960cb34d1299b07e0a0e03801d90b9969a2c187dd6e",
  37. layerID: layer.DiffID("sha256:03f4658f8b782e12230c1783426bd3bacce651ce582a4ffb6fbbfa2079428ecb"),
  38. },
  39. }
  40. // Set some associations
  41. for _, vec := range testVectors {
  42. err := v1IDService.Set(vec.v1ID, vec.registry, vec.layerID)
  43. if err != nil {
  44. t.Fatalf("error calling Set: %v", err)
  45. }
  46. }
  47. // Check the correct values are read back
  48. for _, vec := range testVectors {
  49. layerID, err := v1IDService.Get(vec.v1ID, vec.registry)
  50. if err != nil {
  51. t.Fatalf("error calling Get: %v", err)
  52. }
  53. if layerID != vec.layerID {
  54. t.Fatal("Get returned incorrect layer ID")
  55. }
  56. }
  57. // Test Get on a nonexistent entry
  58. _, err = v1IDService.Get("82379823067823853223359023576437723560923756b03560378f4497753917", "registry1")
  59. if err == nil {
  60. t.Fatal("expected error looking up nonexistent entry")
  61. }
  62. // Overwrite one of the entries and read it back
  63. err = v1IDService.Set(testVectors[0].v1ID, testVectors[0].registry, testVectors[1].layerID)
  64. if err != nil {
  65. t.Fatalf("error calling Set: %v", err)
  66. }
  67. layerID, err := v1IDService.Get(testVectors[0].v1ID, testVectors[0].registry)
  68. if err != nil {
  69. t.Fatalf("error calling Get: %v", err)
  70. }
  71. if layerID != testVectors[1].layerID {
  72. t.Fatal("Get returned incorrect layer ID")
  73. }
  74. }