~sinzui/ubuntu/vivid/juju-core/vivid-1.24.6

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/state/status_model_test.go

  • Committer: Curtis Hovey
  • Date: 2015-09-30 14:14:54 UTC
  • mfrom: (1.1.34)
  • Revision ID: curtis@hovey.name-20150930141454-o3ldf23dzyjio6c0
Backport of 1.24.6 from wily. (LP: #1500916)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package state_test
 
5
 
 
6
import (
 
7
        jc "github.com/juju/testing/checkers"
 
8
        gc "gopkg.in/check.v1"
 
9
 
 
10
        "github.com/juju/juju/state"
 
11
        statetesting "github.com/juju/juju/state/testing"
 
12
)
 
13
 
 
14
type StatusModelSuite struct {
 
15
        statetesting.StateSuite
 
16
}
 
17
 
 
18
var _ = gc.Suite(&StatusModelSuite{})
 
19
 
 
20
func (s *StatusModelSuite) TestTranslateLegacyAgentState(c *gc.C) {
 
21
        for i, test := range []struct {
 
22
                agentStatus     state.Status
 
23
                workloadStatus  state.Status
 
24
                workloadMessage string
 
25
                expected        state.Status
 
26
        }{{
 
27
                agentStatus: state.StatusAllocating,
 
28
                expected:    state.StatusPending,
 
29
        }, {
 
30
                agentStatus: state.StatusError,
 
31
                expected:    state.StatusError,
 
32
        }, {
 
33
                agentStatus:     state.StatusIdle,
 
34
                workloadStatus:  state.StatusMaintenance,
 
35
                expected:        state.StatusPending,
 
36
                workloadMessage: "installing charm software",
 
37
        }, {
 
38
                agentStatus:     state.StatusIdle,
 
39
                workloadStatus:  state.StatusMaintenance,
 
40
                expected:        state.StatusStarted,
 
41
                workloadMessage: "backing up",
 
42
        }, {
 
43
                agentStatus:    state.StatusIdle,
 
44
                workloadStatus: state.StatusTerminated,
 
45
                expected:       state.StatusStopped,
 
46
        }, {
 
47
                agentStatus:    state.StatusIdle,
 
48
                workloadStatus: state.StatusBlocked,
 
49
                expected:       state.StatusStarted,
 
50
        }} {
 
51
                c.Logf("test %d", i)
 
52
                legacy, ok := state.TranslateToLegacyAgentState(test.agentStatus, test.workloadStatus, test.workloadMessage)
 
53
                c.Check(ok, jc.IsTrue)
 
54
                c.Check(legacy, gc.Equals, test.expected)
 
55
        }
 
56
}
 
57
 
 
58
func (s *StatusModelSuite) TestUnitAgentStatusDocValidation(c *gc.C) {
 
59
        unit := s.Factory.MakeUnit(c, nil)
 
60
        for i, test := range []struct {
 
61
                status state.Status
 
62
                info   string
 
63
                err    string
 
64
        }{{
 
65
                status: state.StatusPending,
 
66
                err:    `cannot set invalid status "pending"`,
 
67
        }, {
 
68
                status: state.StatusDown,
 
69
                err:    `cannot set invalid status "down"`,
 
70
        }, {
 
71
                status: state.StatusStarted,
 
72
                err:    `cannot set invalid status "started"`,
 
73
        }, {
 
74
                status: state.StatusStopped,
 
75
                err:    `cannot set invalid status "stopped"`,
 
76
        }, {
 
77
                status: state.StatusAllocating,
 
78
                info:   state.StorageReadyMessage,
 
79
        }, {
 
80
                status: state.StatusAllocating,
 
81
                info:   state.PreparingStorageMessage,
 
82
        }, {
 
83
                status: state.StatusAllocating,
 
84
                info:   "an unexpected or invalid message",
 
85
                err:    `cannot set status "allocating"`,
 
86
        }, {
 
87
                status: state.StatusLost,
 
88
                info:   state.StorageReadyMessage,
 
89
                err:    `cannot set status "lost"`,
 
90
        }, {
 
91
                status: state.StatusLost,
 
92
                info:   state.PreparingStorageMessage,
 
93
                err:    `cannot set status "lost"`,
 
94
        }, {
 
95
                status: state.StatusError,
 
96
                err:    `cannot set status "error" without info`,
 
97
        }, {
 
98
                status: state.StatusError,
 
99
                info:   "some error info",
 
100
        }, {
 
101
                status: state.Status("bogus"),
 
102
                err:    `cannot set invalid status "bogus"`,
 
103
        }} {
 
104
                c.Logf("test %d", i)
 
105
                err := unit.SetAgentStatus(test.status, test.info, nil)
 
106
                if test.err != "" {
 
107
                        c.Check(err, gc.ErrorMatches, test.err)
 
108
                } else {
 
109
                        c.Check(err, jc.ErrorIsNil)
 
110
                }
 
111
        }
 
112
}