github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/meterstatus/state_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package meterstatus_test
     5  
     6  import (
     7  	"path"
     8  	"time"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/worker/meterstatus"
    14  )
    15  
    16  type StateFileSuite struct {
    17  	path  string
    18  	state *meterstatus.StateFile
    19  }
    20  
    21  var _ = gc.Suite(&StateFileSuite{})
    22  
    23  func (t *StateFileSuite) SetUpTest(c *gc.C) {
    24  	t.path = path.Join(c.MkDir(), "state.yaml")
    25  	t.state = meterstatus.NewStateFile(t.path)
    26  }
    27  
    28  func (t *StateFileSuite) TestReadNonExist(c *gc.C) {
    29  	code, info, disconnected, err := t.state.Read()
    30  	c.Assert(err, jc.ErrorIsNil)
    31  	c.Assert(code, gc.Equals, "")
    32  	c.Assert(info, gc.Equals, "")
    33  	c.Assert(disconnected, gc.IsNil)
    34  }
    35  
    36  func (t *StateFileSuite) TestWriteRead(c *gc.C) {
    37  	code := "GREEN"
    38  	info := "some message"
    39  	err := t.state.Write(code, info, nil)
    40  	c.Assert(err, jc.ErrorIsNil)
    41  
    42  	rCode, rInfo, _, err := t.state.Read()
    43  	c.Assert(err, jc.ErrorIsNil)
    44  	c.Assert(rCode, gc.Equals, code)
    45  	c.Assert(rInfo, gc.Equals, info)
    46  }
    47  
    48  func (t *StateFileSuite) TestWriteReadExtra(c *gc.C) {
    49  	code := "GREEN"
    50  	info := "some message"
    51  	err := t.state.Write(code, info, nil)
    52  	c.Assert(err, jc.ErrorIsNil)
    53  
    54  	rCode, rInfo, rDisconnected, err := t.state.Read()
    55  	c.Assert(err, jc.ErrorIsNil)
    56  	c.Assert(rCode, gc.Equals, code)
    57  	c.Assert(rInfo, gc.Equals, info)
    58  	c.Assert(rDisconnected, gc.IsNil)
    59  
    60  	disconnected := meterstatus.Disconnected{
    61  		Disconnected: time.Now().Unix(),
    62  		State:        meterstatus.WaitingRed,
    63  	}
    64  
    65  	err = t.state.Write(code, info, &disconnected)
    66  
    67  	rCode, rInfo, rDisconnected, err = t.state.Read()
    68  	c.Assert(err, jc.ErrorIsNil)
    69  	c.Assert(rCode, gc.Equals, code)
    70  	c.Assert(rInfo, gc.Equals, info)
    71  	c.Assert(*rDisconnected, gc.DeepEquals, disconnected)
    72  }