github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/upgrades/customimagemetadata_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package upgrades_test
     5  
     6  import (
     7  	"bytes"
     8  
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  	"gopkg.in/mgo.v2"
    12  
    13  	"github.com/juju/juju/agent"
    14  	"github.com/juju/juju/environs"
    15  	"github.com/juju/juju/environs/filestorage"
    16  	jujutesting "github.com/juju/juju/juju/testing"
    17  	"github.com/juju/juju/state/storage"
    18  	statetesting "github.com/juju/juju/state/testing"
    19  	"github.com/juju/juju/upgrades"
    20  )
    21  
    22  type migrateCustomImageMetadataStorageSuite struct {
    23  	jujutesting.JujuConnSuite
    24  }
    25  
    26  var _ = gc.Suite(&migrateCustomImageMetadataStorageSuite{})
    27  
    28  var customImageMetadata = map[string][]byte{
    29  	"images/abc":     []byte("abc"),
    30  	"images/def/ghi": []byte("xyz"),
    31  }
    32  
    33  func (s *migrateCustomImageMetadataStorageSuite) TestMigrateCustomImageMetadata(c *gc.C) {
    34  	stor := s.Environ.(environs.EnvironStorage).Storage()
    35  	for path, content := range customImageMetadata {
    36  		err := stor.Put(path, bytes.NewReader(content), int64(len(content)))
    37  		c.Assert(err, jc.ErrorIsNil)
    38  	}
    39  	s.testMigrateCustomImageMetadata(c, &mockAgentConfig{})
    40  }
    41  
    42  func (s *migrateCustomImageMetadataStorageSuite) TestMigrateCustomImageMetadataLocalstorage(c *gc.C) {
    43  	storageDir := c.MkDir()
    44  	stor, err := filestorage.NewFileStorageWriter(storageDir)
    45  	c.Assert(err, jc.ErrorIsNil)
    46  	for path, content := range customImageMetadata {
    47  		err := stor.Put(path, bytes.NewReader(content), int64(len(content)))
    48  		c.Assert(err, jc.ErrorIsNil)
    49  	}
    50  	s.testMigrateCustomImageMetadata(c, &mockAgentConfig{
    51  		values: map[string]string{
    52  			agent.ProviderType: "local",
    53  			agent.StorageDir:   storageDir,
    54  		},
    55  	})
    56  }
    57  
    58  func (s *migrateCustomImageMetadataStorageSuite) testMigrateCustomImageMetadata(c *gc.C, agentConfig agent.Config) {
    59  	var stor statetesting.MapStorage
    60  	s.PatchValue(upgrades.NewStateStorage, func(string, *mgo.Session) storage.Storage {
    61  		return &stor
    62  	})
    63  	err := upgrades.MigrateCustomImageMetadata(s.State, agentConfig)
    64  	c.Assert(err, jc.ErrorIsNil)
    65  	c.Assert(stor.Map, gc.DeepEquals, customImageMetadata)
    66  }