github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/state/storage/storage_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package storage_test
     5  
     6  import (
     7  	"io/ioutil"
     8  	"strings"
     9  
    10  	"github.com/juju/errors"
    11  	gitjujutesting "github.com/juju/testing"
    12  	jc "github.com/juju/testing/checkers"
    13  	gc "gopkg.in/check.v1"
    14  	"gopkg.in/juju/blobstore.v2"
    15  
    16  	"github.com/juju/juju/state/storage"
    17  	"github.com/juju/juju/testing"
    18  )
    19  
    20  const testUUID = "9f484882-2f18-4fd2-967d-db9663db7bea"
    21  
    22  type StorageSuite struct {
    23  	gitjujutesting.MgoSuite
    24  	testing.BaseSuite
    25  	managedStorage blobstore.ManagedStorage
    26  	storage        storage.Storage
    27  }
    28  
    29  var _ = gc.Suite(&StorageSuite{})
    30  
    31  func (s *StorageSuite) SetUpSuite(c *gc.C) {
    32  	s.BaseSuite.SetUpSuite(c)
    33  	s.MgoSuite.SetUpSuite(c)
    34  }
    35  
    36  func (s *StorageSuite) TearDownSuite(c *gc.C) {
    37  	s.MgoSuite.TearDownSuite(c)
    38  	s.BaseSuite.TearDownSuite(c)
    39  }
    40  
    41  func (s *StorageSuite) SetUpTest(c *gc.C) {
    42  	s.BaseSuite.SetUpTest(c)
    43  	s.MgoSuite.SetUpTest(c)
    44  
    45  	rs := blobstore.NewGridFS("blobstore", "blobstore", s.Session)
    46  	db := s.Session.DB("juju")
    47  	s.managedStorage = blobstore.NewManagedStorage(db, rs)
    48  	s.storage = storage.NewStorage(testUUID, s.Session)
    49  }
    50  
    51  func (s *StorageSuite) TearDownTest(c *gc.C) {
    52  	s.MgoSuite.TearDownTest(c)
    53  	s.BaseSuite.TearDownTest(c)
    54  }
    55  
    56  func (s *StorageSuite) TestStorageGet(c *gc.C) {
    57  	err := s.managedStorage.PutForBucket(testUUID, "abc", strings.NewReader("abc"), 3)
    58  	c.Assert(err, jc.ErrorIsNil)
    59  
    60  	r, length, err := s.storage.Get("abc")
    61  	c.Assert(err, jc.ErrorIsNil)
    62  	defer r.Close()
    63  	c.Assert(length, gc.Equals, int64(3))
    64  
    65  	data, err := ioutil.ReadAll(r)
    66  	c.Assert(err, jc.ErrorIsNil)
    67  	c.Assert(string(data), gc.Equals, "abc")
    68  }
    69  
    70  func (s *StorageSuite) TestStoragePut(c *gc.C) {
    71  	err := s.storage.Put("path", strings.NewReader("abcdef"), 3)
    72  	c.Assert(err, jc.ErrorIsNil)
    73  
    74  	r, length, err := s.managedStorage.GetForBucket(testUUID, "path")
    75  	c.Assert(err, jc.ErrorIsNil)
    76  	defer r.Close()
    77  
    78  	c.Assert(length, gc.Equals, int64(3))
    79  	data, err := ioutil.ReadAll(r)
    80  	c.Assert(err, jc.ErrorIsNil)
    81  	c.Assert(string(data), gc.Equals, "abc")
    82  }
    83  
    84  func (s *StorageSuite) TestStorageRemove(c *gc.C) {
    85  	err := s.storage.Put("path", strings.NewReader("abcdef"), 3)
    86  	c.Assert(err, jc.ErrorIsNil)
    87  
    88  	err = s.storage.Remove("path")
    89  	c.Assert(err, jc.ErrorIsNil)
    90  
    91  	_, _, err = s.storage.Get("path")
    92  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    93  
    94  	err = s.storage.Remove("path")
    95  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    96  }