github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/uniter/runner/jujuc/testing/status.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package testing 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/worker/uniter/runner/jujuc" 10 ) 11 12 // Status holds the values for the hook context. 13 type Status struct { 14 UnitStatus jujuc.StatusInfo 15 ApplicationStatus jujuc.ApplicationStatusInfo 16 } 17 18 // SetApplicationStatus builds a service status and sets it on the Status. 19 func (s *Status) SetApplicationStatus(service jujuc.StatusInfo, units []jujuc.StatusInfo) { 20 s.ApplicationStatus = jujuc.ApplicationStatusInfo{ 21 Application: service, 22 Units: units, 23 } 24 } 25 26 // ContextStatus is a test double for jujuc.ContextStatus. 27 type ContextStatus struct { 28 contextBase 29 info *Status 30 } 31 32 // UnitStatus implements jujuc.ContextStatus. 33 func (c *ContextStatus) UnitStatus() (*jujuc.StatusInfo, error) { 34 c.stub.AddCall("UnitStatus") 35 if err := c.stub.NextErr(); err != nil { 36 return nil, errors.Trace(err) 37 } 38 39 return &c.info.UnitStatus, nil 40 } 41 42 // SetUnitStatus implements jujuc.ContextStatus. 43 func (c *ContextStatus) SetUnitStatus(status jujuc.StatusInfo) error { 44 c.stub.AddCall("SetUnitStatus", status) 45 if err := c.stub.NextErr(); err != nil { 46 return errors.Trace(err) 47 } 48 49 c.info.UnitStatus = status 50 return nil 51 } 52 53 // ApplicationStatus implements jujuc.ContextStatus. 54 func (c *ContextStatus) ApplicationStatus() (jujuc.ApplicationStatusInfo, error) { 55 c.stub.AddCall("ApplicationStatus") 56 if err := c.stub.NextErr(); err != nil { 57 return jujuc.ApplicationStatusInfo{}, errors.Trace(err) 58 } 59 60 return c.info.ApplicationStatus, nil 61 } 62 63 // SetApplicationStatus implements jujuc.ContextStatus. 64 func (c *ContextStatus) SetApplicationStatus(status jujuc.StatusInfo) error { 65 c.stub.AddCall("SetApplicationStatus", status) 66 if err := c.stub.NextErr(); err != nil { 67 return errors.Trace(err) 68 } 69 70 c.info.SetApplicationStatus(status, nil) 71 return nil 72 }