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  }