github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 StorageDir: relAgent("state", "storage"), 53 MetricsSpoolDir: relAgent("state", "spool", "metrics"), 54 }, 55 }) 56 } 57 58 func (s *PathsSuite) TestOther(c *gc.C) { 59 s.PatchValue(&version.Current.OS, version.OSType(-1)) 60 61 dataDir := c.MkDir() 62 unitTag := names.NewUnitTag("some-service/323") 63 paths := uniter.NewPaths(dataDir, unitTag) 64 65 relData := relPathFunc(dataDir) 66 relAgent := relPathFunc(relData("agents", "unit-some-service-323")) 67 c.Assert(paths, jc.DeepEquals, uniter.Paths{ 68 ToolsDir: relData("tools/unit-some-service-323"), 69 Runtime: uniter.RuntimePaths{ 70 JujuRunSocket: relAgent("run.socket"), 71 JujucServerSocket: "@" + relAgent("agent.socket"), 72 }, 73 State: uniter.StatePaths{ 74 CharmDir: relAgent("charm"), 75 OperationsFile: relAgent("state", "uniter"), 76 RelationsDir: relAgent("state", "relations"), 77 BundlesDir: relAgent("state", "bundles"), 78 DeployerDir: relAgent("state", "deployer"), 79 StorageDir: relAgent("state", "storage"), 80 MetricsSpoolDir: relAgent("state", "spool", "metrics"), 81 }, 82 }) 83 } 84 85 func (s *PathsSuite) TestContextInterface(c *gc.C) { 86 paths := uniter.Paths{ 87 ToolsDir: "/path/to/tools", 88 Runtime: uniter.RuntimePaths{ 89 JujucServerSocket: "/path/to/socket", 90 }, 91 State: uniter.StatePaths{ 92 CharmDir: "/path/to/charm", 93 MetricsSpoolDir: "/path/to/spool/metrics", 94 }, 95 } 96 c.Assert(paths.GetToolsDir(), gc.Equals, "/path/to/tools") 97 c.Assert(paths.GetCharmDir(), gc.Equals, "/path/to/charm") 98 c.Assert(paths.GetJujucSocket(), gc.Equals, "/path/to/socket") 99 c.Assert(paths.GetMetricsSpoolDir(), gc.Equals, "/path/to/spool/metrics") 100 }