github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/core/migration/phase_test.go (about) 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.IsFalse) 53 c.Check(migration.ABORTDONE.IsTerminal(), jc.IsTrue) 54 c.Check(migration.REAPFAILED.IsTerminal(), jc.IsTrue) 55 c.Check(migration.DONE.IsTerminal(), jc.IsTrue) 56 } 57 58 func (s *PhaseSuite) TestCanTransitionTo(c *gc.C) { 59 c.Check(migration.QUIESCE.CanTransitionTo(migration.SUCCESS), jc.IsFalse) 60 c.Check(migration.QUIESCE.CanTransitionTo(migration.ABORT), jc.IsTrue) 61 c.Check(migration.QUIESCE.CanTransitionTo(migration.READONLY), jc.IsTrue) 62 c.Check(migration.QUIESCE.CanTransitionTo(migration.Phase(-1)), jc.IsFalse) 63 64 c.Check(migration.ABORT.CanTransitionTo(migration.QUIESCE), jc.IsFalse) 65 }