github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/cmd/jujud/agent/machine_charms_test.go (about) 1 // Copyright 2012-2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package agent 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/charm.v6-unstable" 10 11 charmtesting "github.com/juju/juju/apiserver/charmrevisionupdater/testing" 12 "github.com/juju/juju/state" 13 coretesting "github.com/juju/juju/testing" 14 ) 15 16 // MachineWithCharmsSuite provides infrastructure for tests which need to 17 // work with charms. 18 type MachineWithCharmsSuite struct { 19 commonMachineSuite 20 charmtesting.CharmSuite 21 22 machine *state.Machine 23 } 24 25 var _ = gc.Suite(&MachineWithCharmsSuite{}) 26 27 func (s *MachineWithCharmsSuite) SetUpSuite(c *gc.C) { 28 s.commonMachineSuite.SetUpSuite(c) 29 s.CharmSuite.SetUpSuite(c, &s.commonMachineSuite.JujuConnSuite) 30 } 31 32 func (s *MachineWithCharmsSuite) TearDownSuite(c *gc.C) { 33 s.CharmSuite.TearDownSuite(c) 34 s.commonMachineSuite.TearDownSuite(c) 35 } 36 37 func (s *MachineWithCharmsSuite) SetUpTest(c *gc.C) { 38 s.commonMachineSuite.SetUpTest(c) 39 s.CharmSuite.SetUpTest(c) 40 } 41 42 func (s *MachineWithCharmsSuite) TearDownTest(c *gc.C) { 43 s.CharmSuite.TearDownTest(c) 44 s.commonMachineSuite.TearDownTest(c) 45 } 46 47 func (s *MachineWithCharmsSuite) TestManageModelRunsCharmRevisionUpdater(c *gc.C) { 48 m, _, _ := s.primeAgent(c, state.JobManageModel) 49 50 s.SetupScenario(c) 51 52 a := s.newAgent(c, m) 53 go func() { 54 c.Check(a.Run(nil), jc.ErrorIsNil) 55 }() 56 defer func() { c.Check(a.Stop(), jc.ErrorIsNil) }() 57 58 checkRevision := func() bool { 59 curl := charm.MustParseURL("cs:quantal/mysql") 60 placeholder, err := s.State.LatestPlaceholderCharm(curl) 61 return err == nil && placeholder.String() == curl.WithRevision(23).String() 62 } 63 success := false 64 for attempt := coretesting.LongAttempt.Start(); attempt.Next(); { 65 if success = checkRevision(); success { 66 break 67 } 68 } 69 c.Assert(success, jc.IsTrue) 70 }