github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/environs/tools/storage_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package tools_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 "github.com/juju/version" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/environs/filestorage" 12 envtesting "github.com/juju/juju/environs/testing" 13 envtools "github.com/juju/juju/environs/tools" 14 coretesting "github.com/juju/juju/testing" 15 coretools "github.com/juju/juju/tools" 16 ) 17 18 type StorageSuite struct { 19 coretesting.BaseSuite 20 } 21 22 var _ = gc.Suite(&StorageSuite{}) 23 24 func (s *StorageSuite) TestStorageName(c *gc.C) { 25 vers := version.MustParseBinary("1.2.3-precise-amd64") 26 path := envtools.StorageName(vers, "proposed") 27 c.Assert(path, gc.Equals, "tools/proposed/juju-1.2.3-precise-amd64.tgz") 28 } 29 30 func (s *StorageSuite) TestReadListEmpty(c *gc.C) { 31 stor, err := filestorage.NewFileStorageWriter(c.MkDir()) 32 c.Assert(err, jc.ErrorIsNil) 33 _, err = envtools.ReadList(stor, "released", 2, 0) 34 c.Assert(err, gc.Equals, envtools.ErrNoTools) 35 } 36 37 func (s *StorageSuite) TestReadList(c *gc.C) { 38 stor, err := filestorage.NewFileStorageWriter(c.MkDir()) 39 c.Assert(err, jc.ErrorIsNil) 40 v100 := version.MustParseBinary("1.0.0-precise-amd64") 41 v101 := version.MustParseBinary("1.0.1-precise-amd64") 42 v111 := version.MustParseBinary("1.1.1-precise-amd64") 43 v201 := version.MustParseBinary("2.0.1-precise-amd64") 44 agentTools := envtesting.AssertUploadFakeToolsVersions(c, stor, "proposed", "proposed", v100, v101, v111, v201) 45 t100 := agentTools[0] 46 t101 := agentTools[1] 47 t111 := agentTools[2] 48 t201 := agentTools[3] 49 50 for i, t := range []struct { 51 majorVersion, 52 minorVersion int 53 list coretools.List 54 }{{ 55 -1, -1, coretools.List{t100, t101, t111, t201}, 56 }, { 57 1, 0, coretools.List{t100, t101}, 58 }, { 59 1, 1, coretools.List{t111}, 60 }, { 61 1, -1, coretools.List{t100, t101, t111}, 62 }, { 63 1, 2, nil, 64 }, { 65 3, 0, nil, 66 }} { 67 c.Logf("test %d", i) 68 list, err := envtools.ReadList(stor, "proposed", t.majorVersion, t.minorVersion) 69 if t.list != nil { 70 c.Assert(err, jc.ErrorIsNil) 71 // ReadList doesn't set the Size or SHA256, so blank out those attributes. 72 for _, tool := range t.list { 73 tool.Size = 0 74 tool.SHA256 = "" 75 } 76 c.Assert(list, gc.DeepEquals, t.list) 77 } else { 78 c.Assert(err, gc.Equals, coretools.ErrNoMatches) 79 } 80 } 81 } 82 83 func (s *StorageSuite) TestReadListLegacyPPC64(c *gc.C) { 84 stor, err := filestorage.NewFileStorageWriter(c.MkDir()) 85 c.Assert(err, jc.ErrorIsNil) 86 v100 := version.MustParseBinary("1.0.0-precise-amd64") 87 v101 := version.MustParseBinary("1.0.1-precise-ppc64el") 88 agentTools := envtesting.AssertUploadFakeToolsVersions(c, stor, "proposed", "proposed", v100, v101) 89 90 amd64Tools := agentTools[0] 91 ppc64elTools := agentTools[1] 92 // We also expect metadata for ppc64 to be added. 93 ppc64Tools := *ppc64elTools 94 ppc64Tools.Version.Arch = "ppc64" 95 expected := coretools.List{amd64Tools, ppc64elTools, &ppc64Tools} 96 97 list, err := envtools.ReadList(stor, "proposed", 1, 0) 98 c.Assert(err, jc.ErrorIsNil) 99 // ReadList doesn't set the Size or SHA256, so blank out those attributes. 100 for _, tool := range expected { 101 tool.Size = 0 102 tool.SHA256 = "" 103 } 104 c.Assert(list, gc.DeepEquals, expected) 105 }