~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/worker/uniter/runner/jujuc/reboot_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2014 Canonical Ltd.
 
2
// Copyright 2014 Cloudbase Solutions SRL
 
3
// Licensed under the AGPLv3, see LICENCE file for details.
 
4
 
 
5
package jujuc_test
 
6
 
 
7
import (
 
8
        "github.com/juju/cmd"
 
9
        jc "github.com/juju/testing/checkers"
 
10
        gc "gopkg.in/check.v1"
 
11
        "launchpad.net/gnuflag"
 
12
 
 
13
        "github.com/juju/juju/testing"
 
14
        "github.com/juju/juju/worker/uniter/runner/jujuc"
 
15
)
 
16
 
 
17
type JujuRebootSuite struct {
 
18
        ContextSuite
 
19
}
 
20
 
 
21
var _ = gc.Suite(&JujuRebootSuite{})
 
22
 
 
23
func (s *JujuRebootSuite) TestNewJujuRebootCommand(c *gc.C) {
 
24
        cmd, err := jujuc.NewJujuRebootCommand(nil)
 
25
        c.Assert(err, jc.ErrorIsNil)
 
26
        c.Assert(cmd, gc.DeepEquals, &jujuc.JujuRebootCommand{})
 
27
}
 
28
 
 
29
func (s *JujuRebootSuite) TestInfo(c *gc.C) {
 
30
        rebootCmd, err := jujuc.NewJujuRebootCommand(nil)
 
31
        c.Assert(err, jc.ErrorIsNil)
 
32
        cmdInfo := rebootCmd.Info()
 
33
 
 
34
        c.Assert(cmdInfo.Name, gc.Equals, "juju-reboot")
 
35
        c.Assert(cmdInfo.Args, gc.Equals, "")
 
36
        c.Assert(cmdInfo.Purpose, gc.Equals, "Reboot the host machine")
 
37
}
 
38
 
 
39
func (s *JujuRebootSuite) TestSetFlags(c *gc.C) {
 
40
        rebootCmd := jujuc.JujuRebootCommand{Now: true}
 
41
        fs := &gnuflag.FlagSet{}
 
42
 
 
43
        rebootCmd.SetFlags(fs)
 
44
 
 
45
        flag := fs.Lookup("now")
 
46
        c.Assert(flag, gc.NotNil)
 
47
}
 
48
 
 
49
func (s *JujuRebootSuite) TestJujuRebootCommand(c *gc.C) {
 
50
        var jujuRebootTests = []struct {
 
51
                summary  string
 
52
                hctx     *Context
 
53
                args     []string
 
54
                code     int
 
55
                priority jujuc.RebootPriority
 
56
        }{{
 
57
                summary:  "test reboot priority defaulting to RebootAfterHook",
 
58
                hctx:     &Context{shouldError: false, rebootPriority: jujuc.RebootSkip},
 
59
                args:     []string{},
 
60
                code:     0,
 
61
                priority: jujuc.RebootAfterHook,
 
62
        }, {
 
63
                summary:  "test reboot priority being set to RebootNow",
 
64
                hctx:     &Context{shouldError: false, rebootPriority: jujuc.RebootSkip},
 
65
                args:     []string{"--now"},
 
66
                code:     0,
 
67
                priority: jujuc.RebootNow,
 
68
        }, {
 
69
                summary:  "test a failed running of juju-reboot",
 
70
                hctx:     &Context{shouldError: true, rebootPriority: jujuc.RebootSkip},
 
71
                args:     []string{},
 
72
                code:     1,
 
73
                priority: jujuc.RebootAfterHook,
 
74
        }, {
 
75
                summary:  "test a failed running with parameter provided",
 
76
                hctx:     &Context{shouldError: true, rebootPriority: jujuc.RebootSkip},
 
77
                args:     []string{"--now"},
 
78
                code:     1,
 
79
                priority: jujuc.RebootNow,
 
80
        }, {
 
81
                summary:  "test invalid args provided",
 
82
                hctx:     &Context{shouldError: false, rebootPriority: jujuc.RebootSkip},
 
83
                args:     []string{"--way", "--too", "--many", "--args"},
 
84
                code:     2,
 
85
                priority: jujuc.RebootSkip,
 
86
        }}
 
87
 
 
88
        for i, t := range jujuRebootTests {
 
89
                c.Logf("Test %d: %s", i, t.summary)
 
90
 
 
91
                hctx := s.newHookContext(c)
 
92
                hctx.shouldError = t.hctx.shouldError
 
93
                hctx.rebootPriority = t.hctx.rebootPriority
 
94
                com, err := jujuc.NewCommand(hctx, cmdString("juju-reboot"))
 
95
                c.Assert(err, jc.ErrorIsNil)
 
96
                ctx := testing.Context(c)
 
97
                code := cmd.Main(com, ctx, t.args)
 
98
                c.Check(code, gc.Equals, t.code)
 
99
                c.Check(hctx.rebootPriority, gc.Equals, t.priority)
 
100
        }
 
101
}
 
102
 
 
103
func (s *JujuRebootSuite) TestRebootInActions(c *gc.C) {
 
104
        jujucCtx := &actionGetContext{}
 
105
        com, err := jujuc.NewCommand(jujucCtx, cmdString("juju-reboot"))
 
106
        c.Assert(err, jc.ErrorIsNil)
 
107
        cmdCtx := testing.Context(c)
 
108
        code := cmd.Main(com, cmdCtx, nil)
 
109
        c.Check(code, gc.Equals, 1)
 
110
        c.Assert(testing.Stderr(cmdCtx), gc.Equals, "error: juju-reboot is not supported when running an action.\n")
 
111
}