github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/caasoperator/paths_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package caasoperator_test
     5  
     6  import (
     7  	"path/filepath"
     8  
     9  	"github.com/juju/testing"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  	"gopkg.in/juju/names.v2"
    13  
    14  	"github.com/juju/juju/worker/caasoperator"
    15  )
    16  
    17  type PathsSuite struct {
    18  	testing.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&PathsSuite{})
    22  
    23  func relPathFunc(base string) func(parts ...string) string {
    24  	return func(parts ...string) string {
    25  		allParts := append([]string{base}, parts...)
    26  		return filepath.Join(allParts...)
    27  	}
    28  }
    29  
    30  func (s *PathsSuite) TestPaths(c *gc.C) {
    31  	dataDir := c.MkDir()
    32  	paths := caasoperator.NewPaths(dataDir, names.NewApplicationTag("foo"))
    33  
    34  	relData := relPathFunc(dataDir)
    35  	relAgent := relPathFunc(relData("agents", "application-foo"))
    36  	c.Assert(paths, jc.DeepEquals, caasoperator.Paths{
    37  		ToolsDir: relData("tools"),
    38  		Runtime: caasoperator.RuntimePaths{
    39  			JujuRunSocket:           relAgent("run.socket"),
    40  			HookCommandServerSocket: "@" + relAgent("agent.socket"),
    41  		},
    42  		State: caasoperator.StatePaths{
    43  			BaseDir:         relAgent(),
    44  			CharmDir:        relAgent("charm"),
    45  			RelationsDir:    relAgent("state", "relations"),
    46  			BundlesDir:      relAgent("state", "bundles"),
    47  			DeployerDir:     relAgent("state", "deployer"),
    48  			OperationsFile:  relAgent("state", "operator"),
    49  			MetricsSpoolDir: relAgent("state", "spool", "metrics"),
    50  		},
    51  	})
    52  }
    53  
    54  func (s *PathsSuite) TestContextInterface(c *gc.C) {
    55  	paths := caasoperator.Paths{
    56  		ToolsDir: "/path/to/tools",
    57  		Runtime: caasoperator.RuntimePaths{
    58  			HookCommandServerSocket: "/path/to/socket",
    59  		},
    60  		State: caasoperator.StatePaths{
    61  			CharmDir:        "/path/to/charm",
    62  			MetricsSpoolDir: "/path/to/spool/metrics",
    63  		},
    64  	}
    65  	c.Assert(paths.GetToolsDir(), gc.Equals, "/path/to/tools")
    66  	c.Assert(paths.GetCharmDir(), gc.Equals, "/path/to/charm")
    67  	c.Assert(paths.GetHookCommandSocket(), gc.Equals, "/path/to/socket")
    68  	c.Assert(paths.GetMetricsSpoolDir(), gc.Equals, "/path/to/spool/metrics")
    69  }