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  }