func waitForUnitStarted(stateConn *state.State, unit *state.Unit, c *gc.C) { timeout := time.After(5 * time.Second) for { select { case <-timeout: c.Fatalf("no activity detected") case <-time.After(coretesting.ShortWait): err := unit.Refresh() c.Assert(err, gc.IsNil) st, info, data, err := unit.Status() c.Assert(err, gc.IsNil) switch st { case params.StatusPending, params.StatusInstalled: c.Logf("waiting...") continue case params.StatusStarted: c.Logf("started!") return case params.StatusDown: stateConn.StartSync() c.Logf("unit is still down") default: c.Fatalf("unexpected status %s %s %v", st, info, data) } } } }
func (s *clientSuite) assertResolved(c *gc.C, u *state.Unit) { err := s.APIState.Client().Resolved("wordpress/0", false) c.Assert(err, jc.ErrorIsNil) // Freshen the unit's state. err = u.Refresh() c.Assert(err, jc.ErrorIsNil) // And now the actual test assertions: we set the unit as resolved via // the API so it should have a resolved mode set. mode := u.Resolved() c.Assert(mode, gc.Equals, state.ResolvedRetryHooks) }
func waitForUnitActive(stateConn *state.State, unit *state.Unit, c *gc.C) { timeout := time.After(5 * time.Second) for { select { case <-timeout: c.Fatalf("no activity detected") case <-time.After(coretesting.ShortWait): err := unit.Refresh() c.Assert(err, jc.ErrorIsNil) statusInfo, err := unit.Status() c.Assert(err, jc.ErrorIsNil) switch statusInfo.Status { case state.StatusMaintenance, state.StatusWaiting, state.StatusBlocked: c.Logf("waiting...") continue case state.StatusActive: c.Logf("active!") return case state.StatusUnknown: // Active units may have a status of unknown if they have // started but not run status-set. c.Logf("unknown but active!") return default: c.Fatalf("unexpected status %s %s %v", statusInfo.Status, statusInfo.Message, statusInfo.Data) } statusInfo, err = unit.AgentStatus() c.Assert(err, jc.ErrorIsNil) switch statusInfo.Status { case state.StatusAllocating, state.StatusExecuting, state.StatusRebooting, state.StatusIdle: c.Logf("waiting...") continue case state.StatusError: stateConn.StartSync() c.Logf("unit is still down") default: c.Fatalf("unexpected status %s %s %v", statusInfo.Status, statusInfo.Message, statusInfo.Data) } } } }