1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
jc "github.com/juju/testing/checkers"
10
"github.com/juju/juju/core/migration"
11
coretesting "github.com/juju/juju/testing"
14
type PhaseSuite struct {
18
var _ = gc.Suite(new(PhaseSuite))
20
func (s *PhaseSuite) TestUNKNOWN(c *gc.C) {
21
// 0 should be UNKNOWN to guard against uninitialised struct
23
c.Check(migration.Phase(0), gc.Equals, migration.UNKNOWN)
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")
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")
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)
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)
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)
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)
63
c.Check(migration.ABORT.CanTransitionTo(migration.QUIESCE), jc.IsFalse)