github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/worker/uniter/paths_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package uniter_test 5 6 import ( 7 "path/filepath" 8 9 "github.com/juju/names" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/version" 15 "github.com/juju/juju/worker/uniter" 16 ) 17 18 type PathsSuite struct { 19 testing.IsolationSuite 20 } 21 22 var _ = gc.Suite(&PathsSuite{}) 23 24 func relPathFunc(base string) func(parts ...string) string { 25 return func(parts ...string) string { 26 allParts := append([]string{base}, parts...) 27 return filepath.Join(allParts...) 28 } 29 } 30 31 func (s *PathsSuite) TestWindows(c *gc.C) { 32 s.PatchValue(&version.Current.OS, version.Windows) 33 34 dataDir := c.MkDir() 35 unitTag := names.NewUnitTag("some-service/323") 36 paths := uniter.NewPaths(dataDir, unitTag) 37 38 relData := relPathFunc(dataDir) 39 relAgent := relPathFunc(relData("agents", "unit-some-service-323")) 40 c.Assert(paths, jc.DeepEquals, uniter.Paths{ 41 ToolsDir: relData("tools/unit-some-service-323"), 42 Runtime: uniter.RuntimePaths{ 43 JujuRunSocket: `\\.\pipe\unit-some-service-323-run`, 44 JujucServerSocket: `\\.\pipe\unit-some-service-323-agent`, 45 }, 46 State: uniter.StatePaths{ 47 CharmDir: relAgent("charm"), 48 OperationsFile: relAgent("state", "uniter"), 49 RelationsDir: relAgent("state", "relations"), 50 BundlesDir: relAgent("state", "bundles"), 51 DeployerDir: relAgent("state", "deployer"), 52 }, 53 }) 54 } 55 56 func (s *PathsSuite) TestOther(c *gc.C) { 57 s.PatchValue(&version.Current.OS, version.OSType(-1)) 58 59 dataDir := c.MkDir() 60 unitTag := names.NewUnitTag("some-service/323") 61 paths := uniter.NewPaths(dataDir, unitTag) 62 63 relData := relPathFunc(dataDir) 64 relAgent := relPathFunc(relData("agents", "unit-some-service-323")) 65 c.Assert(paths, jc.DeepEquals, uniter.Paths{ 66 ToolsDir: relData("tools/unit-some-service-323"), 67 Runtime: uniter.RuntimePaths{ 68 JujuRunSocket: relAgent("run.socket"), 69 JujucServerSocket: "@" + relAgent("agent.socket"), 70 }, 71 State: uniter.StatePaths{ 72 CharmDir: relAgent("charm"), 73 OperationsFile: relAgent("state", "uniter"), 74 RelationsDir: relAgent("state", "relations"), 75 BundlesDir: relAgent("state", "bundles"), 76 DeployerDir: relAgent("state", "deployer"), 77 }, 78 }) 79 } 80 81 func (s *PathsSuite) TestContextInterface(c *gc.C) { 82 paths := uniter.Paths{ 83 ToolsDir: "/path/to/tools", 84 Runtime: uniter.RuntimePaths{ 85 JujucServerSocket: "/path/to/socket", 86 }, 87 State: uniter.StatePaths{ 88 CharmDir: "/path/to/charm", 89 }, 90 } 91 c.Assert(paths.GetToolsDir(), gc.Equals, "/path/to/tools") 92 c.Assert(paths.GetCharmDir(), gc.Equals, "/path/to/charm") 93 c.Assert(paths.GetJujucSocket(), gc.Equals, "/path/to/socket") 94 }