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 }