26
26
"launchpad.net/juju-core/state/api"
27
27
apideployer "launchpad.net/juju-core/state/api/deployer"
28
28
"launchpad.net/juju-core/state/api/params"
29
charmtesting "launchpad.net/juju-core/state/apiserver/charmrevisionupdater/testing"
29
30
statetesting "launchpad.net/juju-core/state/testing"
30
31
"launchpad.net/juju-core/state/watcher"
31
32
coretesting "launchpad.net/juju-core/testing"
693
694
_, err = os.Stat(ac.DataDir())
694
695
c.Assert(err, jc.Satisfies, os.IsNotExist)
698
// MachineWithCharmsSuite provides infrastructure for tests which need to
700
type MachineWithCharmsSuite struct {
701
charmtesting.CharmSuite
703
machine *state.Machine
706
var _ = gc.Suite(&MachineWithCharmsSuite{})
708
func (s *MachineWithCharmsSuite) SetUpTest(c *gc.C) {
709
s.CharmSuite.SetUpTest(c)
711
// Create a state server machine.
713
s.machine, err = s.State.AddOneMachine(state.MachineTemplate{
715
InstanceId: "ardbeg-0",
716
Nonce: state.BootstrapNonce,
717
Jobs: []state.MachineJob{state.JobManageState},
719
c.Assert(err, gc.IsNil)
720
err = s.machine.SetPassword(initialMachinePassword)
721
c.Assert(err, gc.IsNil)
722
tag := names.MachineTag(s.machine.Id())
723
err = s.machine.SetMongoPassword(initialMachinePassword)
724
c.Assert(err, gc.IsNil)
726
// Set up the agent configuration.
727
stateInfo := s.StateInfo(c)
728
writeStateAgentConfig(c, stateInfo, s.DataDir(), tag, initialMachinePassword)
731
func (s *MachineWithCharmsSuite) TestManageStateRunsCharmRevisionUpdater(c *gc.C) {
734
// Start the machine agent.
736
args := []string{"--data-dir", s.DataDir(), "--machine-id", s.machine.Id()}
737
err := coretesting.InitCommand(a, args)
738
c.Assert(err, gc.IsNil)
741
c.Check(a.Run(nil), gc.IsNil)
743
defer func() { c.Check(a.Stop(), gc.IsNil) }()
745
checkRevision := func() bool {
746
curl := charm.MustParseURL("cs:quantal/mysql")
747
placeholder, err := s.State.LatestPlaceholderCharm(curl)
748
return err == nil && placeholder.String() == curl.WithRevision(23).String()
751
for attempt := coretesting.LongAttempt.Start(); attempt.Next(); {
752
if success = checkRevision(); success {
756
c.Assert(success, gc.Equals, true)