func (s *uploadSuite) TestUpload(c *gc.C) { // Create some metadata. sourceDir, destDir, destStor, im := createImageMetadata(c) // Ensure it can be uploaded. err := imagemetadata.UploadImageMetadata(destStor, sourceDir) c.Assert(err, gc.IsNil) metadata := testing.ParseMetadataFromDir(c, destDir) c.Assert(metadata, gc.HasLen, 1) c.Assert(im, gc.DeepEquals, metadata[0]) }
func (s *generateSuite) TestWriteMetadataMergeDifferentRegion(c *gc.C) { existingImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, jc.ErrorIsNil) err = imagemetadata.MergeAndWriteMetadata("raring", existingImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) newImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "abcd", Arch: "amd64", Version: "13.04", }, { Id: "xyz", Arch: "arm", Version: "13.04", }, } cloudSpec = &simplestreams.CloudSpec{ Region: "region2", Endpoint: "endpoint2", } err = imagemetadata.MergeAndWriteMetadata("raring", newImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) metadata := testing.ParseMetadataFromDir(c, dir) c.Assert(metadata, gc.HasLen, 3) for _, im := range newImageMetadata { im.RegionName = "region2" im.Endpoint = "endpoint2" } existingImageMetadata[0].RegionName = "region" existingImageMetadata[0].Endpoint = "endpoint" newImageMetadata = append(newImageMetadata, existingImageMetadata[0]) imagemetadata.Sort(newImageMetadata) c.Assert(metadata, gc.DeepEquals, newImageMetadata) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "1234") assertFetch(c, targetStorage, "raring", "amd64", "region2", "endpoint2", "abcd") }
// lp#1600054 func (s *generateSuite) TestWriteMetadataMergeDifferentVirtType(c *gc.C) { existingImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", VirtType: "kvm", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, jc.ErrorIsNil) err = imagemetadata.MergeAndWriteMetadata("raring", existingImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) newImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "abcd", Arch: "amd64", Version: "13.04", VirtType: "lxd", }, } err = imagemetadata.MergeAndWriteMetadata("raring", newImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) foundMetadata := testing.ParseMetadataFromDir(c, dir) expectedMetadata := append(newImageMetadata, existingImageMetadata...) c.Assert(len(foundMetadata), gc.Equals, len(expectedMetadata)) for _, im := range expectedMetadata { im.RegionName = cloudSpec.Region im.Endpoint = cloudSpec.Endpoint } imagemetadata.Sort(expectedMetadata) c.Assert(foundMetadata, gc.DeepEquals, expectedMetadata) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "1234", "abcd") }
func (s *generateSuite) TestWriteMetadataMergeOverwriteSameArch(c *gc.C) { existingImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, gc.IsNil) err = imagemetadata.MergeAndWriteMetadata("raring", existingImageMetadata, cloudSpec, targetStorage) c.Assert(err, gc.IsNil) newImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "abcd", Arch: "amd64", Version: "13.04", }, { Id: "xyz", Arch: "arm", Version: "13.04", }, } err = imagemetadata.MergeAndWriteMetadata("raring", newImageMetadata, cloudSpec, targetStorage) c.Assert(err, gc.IsNil) metadata := testing.ParseMetadataFromDir(c, dir) c.Assert(metadata, gc.HasLen, 2) for _, im := range newImageMetadata { im.RegionName = cloudSpec.Region im.Endpoint = cloudSpec.Endpoint } c.Assert(metadata, gc.DeepEquals, newImageMetadata) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "abcd") assertFetch(c, targetStorage, "raring", "arm", "region", "endpoint", "xyz") }
func (s *generateSuite) TestWriteMetadata(c *gc.C) { im := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, jc.ErrorIsNil) err = imagemetadata.MergeAndWriteMetadata("raring", im, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) metadata := testing.ParseMetadataFromDir(c, dir) c.Assert(metadata, gc.HasLen, 1) im[0].RegionName = cloudSpec.Region im[0].Endpoint = cloudSpec.Endpoint c.Assert(im[0], gc.DeepEquals, metadata[0]) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "1234") }