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 }