github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/worker/machineactions/handleactions_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Copyright 2016 Cloudbase Solutions SRL 3 // Licensed under the AGPLv3, see LICENCE file for details. 4 5 package machineactions_test 6 7 import ( 8 "strings" 9 10 "github.com/juju/errors" 11 "github.com/juju/juju/core/actions" 12 "github.com/juju/juju/worker/machineactions" 13 "github.com/juju/testing" 14 jc "github.com/juju/testing/checkers" 15 "github.com/juju/utils/exec" 16 gc "gopkg.in/check.v1" 17 ) 18 19 type HandleSuite struct { 20 testing.IsolationSuite 21 } 22 23 var _ = gc.Suite(&HandleSuite{}) 24 25 func (s *HandleSuite) TestInvalidAction(c *gc.C) { 26 results, err := machineactions.HandleAction("invalid", nil) 27 c.Assert(err, gc.ErrorMatches, "unexpected action invalid") 28 c.Assert(results, gc.IsNil) 29 } 30 31 func (s *HandleSuite) TestValidActionInvalidParams(c *gc.C) { 32 results, err := machineactions.HandleAction(actions.JujuRunActionName, nil) 33 c.Assert(err, gc.ErrorMatches, "invalid action parameters") 34 c.Assert(results, gc.IsNil) 35 } 36 37 func (s *HandleSuite) TestTimeoutRun(c *gc.C) { 38 params := map[string]interface{}{ 39 "command": "sleep 100", 40 "timeout": float64(1), 41 } 42 43 results, err := machineactions.HandleAction(actions.JujuRunActionName, params) 44 c.Assert(errors.Cause(err), gc.Equals, exec.ErrCancelled) 45 c.Assert(results, gc.IsNil) 46 } 47 48 func (s *HandleSuite) TestSuccessfulRun(c *gc.C) { 49 params := map[string]interface{}{ 50 "command": "echo 1", 51 "timeout": float64(0), 52 } 53 54 results, err := machineactions.HandleAction(actions.JujuRunActionName, params) 55 c.Assert(err, jc.ErrorIsNil) 56 c.Assert(results["Code"], gc.Equals, "0") 57 c.Assert(strings.TrimRight(results["Stdout"].(string), "\r\n"), gc.Equals, "1") 58 c.Assert(results["Stderr"], gc.Equals, "") 59 } 60 61 func (s *HandleSuite) TestErrorRun(c *gc.C) { 62 params := map[string]interface{}{ 63 "command": "exit 42", 64 "timeout": float64(0), 65 } 66 67 results, err := machineactions.HandleAction(actions.JujuRunActionName, params) 68 c.Assert(err, jc.ErrorIsNil) 69 c.Assert(results["Code"], gc.Equals, "42") 70 c.Assert(results["Stdout"], gc.Equals, "") 71 c.Assert(results["Stderr"], gc.Equals, "") 72 }