github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/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/v2" 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-ubuntu-amd64") 26 path := envtools.StorageName(vers, "proposed") 27 c.Assert(path, gc.Equals, "tools/proposed/juju-1.2.3-ubuntu-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-ubuntu-amd64") 41 v101 := version.MustParseBinary("1.0.1-ubuntu-amd64") 42 v111 := version.MustParseBinary("1.1.1-ubuntu-amd64") 43 v201 := version.MustParseBinary("2.0.1-ubuntu-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 }