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  }