~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/core/migration/phase_test.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package migration_test
 
5
 
 
6
import (
 
7
        jc "github.com/juju/testing/checkers"
 
8
        gc "gopkg.in/check.v1"
 
9
 
 
10
        "github.com/juju/juju/core/migration"
 
11
        coretesting "github.com/juju/juju/testing"
 
12
)
 
13
 
 
14
type PhaseSuite struct {
 
15
        coretesting.BaseSuite
 
16
}
 
17
 
 
18
var _ = gc.Suite(new(PhaseSuite))
 
19
 
 
20
func (s *PhaseSuite) TestUNKNOWN(c *gc.C) {
 
21
        // 0 should be UNKNOWN to guard against uninitialised struct
 
22
        // fields.
 
23
        c.Check(migration.Phase(0), gc.Equals, migration.UNKNOWN)
 
24
}
 
25
 
 
26
func (s *PhaseSuite) TestStringValid(c *gc.C) {
 
27
        c.Check(migration.PRECHECK.String(), gc.Equals, "PRECHECK")
 
28
        c.Check(migration.UNKNOWN.String(), gc.Equals, "UNKNOWN")
 
29
        c.Check(migration.ABORT.String(), gc.Equals, "ABORT")
 
30
}
 
31
 
 
32
func (s *PhaseSuite) TestInvalid(c *gc.C) {
 
33
        c.Check(migration.Phase(-1).String(), gc.Equals, "UNKNOWN")
 
34
        c.Check(migration.Phase(9999).String(), gc.Equals, "UNKNOWN")
 
35
}
 
36
 
 
37
func (s *PhaseSuite) TestParseValid(c *gc.C) {
 
38
        phase, ok := migration.ParsePhase("REAP")
 
39
        c.Check(phase, gc.Equals, migration.REAP)
 
40
        c.Check(ok, jc.IsTrue)
 
41
}
 
42
 
 
43
func (s *PhaseSuite) TestParseInvalid(c *gc.C) {
 
44
        phase, ok := migration.ParsePhase("foo")
 
45
        c.Check(phase, gc.Equals, migration.UNKNOWN)
 
46
        c.Check(ok, jc.IsFalse)
 
47
}
 
48
 
 
49
func (s *PhaseSuite) TestIsTerminal(c *gc.C) {
 
50
        c.Check(migration.QUIESCE.IsTerminal(), jc.IsFalse)
 
51
        c.Check(migration.SUCCESS.IsTerminal(), jc.IsFalse)
 
52
        c.Check(migration.ABORT.IsTerminal(), jc.IsTrue)
 
53
        c.Check(migration.REAPFAILED.IsTerminal(), jc.IsTrue)
 
54
        c.Check(migration.DONE.IsTerminal(), jc.IsTrue)
 
55
}
 
56
 
 
57
func (s *PhaseSuite) TestCanTransitionTo(c *gc.C) {
 
58
        c.Check(migration.QUIESCE.CanTransitionTo(migration.SUCCESS), jc.IsFalse)
 
59
        c.Check(migration.QUIESCE.CanTransitionTo(migration.ABORT), jc.IsTrue)
 
60
        c.Check(migration.QUIESCE.CanTransitionTo(migration.READONLY), jc.IsTrue)
 
61
        c.Check(migration.QUIESCE.CanTransitionTo(migration.Phase(-1)), jc.IsFalse)
 
62
 
 
63
        c.Check(migration.ABORT.CanTransitionTo(migration.QUIESCE), jc.IsFalse)
 
64
}