Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1830)

Delta Between Two Patch Sets: state/api/agent/machine_test.go

Issue 83150043: state/api/agent: added IsMaster to the API
Left Patch Set: Created 10 years ago
Right Patch Set: state/api/agent: added IsMaster to the API Created 9 years, 12 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
LEFTRIGHT
1 // Copyright 2012, 2013 Canonical Ltd. 1 // Copyright 2012, 2013 Canonical Ltd.
2 // Licensed under the AGPLv3, see LICENCE file for details. 2 // Licensed under the AGPLv3, see LICENCE file for details.
3 3
4 package agent_test 4 package agent_test
5 5
6 import ( 6 import (
7 "fmt" 7 "fmt"
8 stdtesting "testing" 8 stdtesting "testing"
9 9
10 jc "github.com/juju/testing/checkers" 10 jc "github.com/juju/testing/checkers"
11 "labix.org/v2/mgo" 11 "labix.org/v2/mgo"
12 gc "launchpad.net/gocheck" 12 gc "launchpad.net/gocheck"
13 13
14 "launchpad.net/juju-core/agent/mongo" 14 "launchpad.net/juju-core/agent/mongo"
15 "launchpad.net/juju-core/environs" 15 "launchpad.net/juju-core/environs"
16 "launchpad.net/juju-core/errors" 16 "launchpad.net/juju-core/errors"
17 "launchpad.net/juju-core/instance"
18 "launchpad.net/juju-core/juju/testing" 17 "launchpad.net/juju-core/juju/testing"
19 "launchpad.net/juju-core/replicaset"
20 "launchpad.net/juju-core/state" 18 "launchpad.net/juju-core/state"
21 "launchpad.net/juju-core/state/api" 19 "launchpad.net/juju-core/state/api"
22 "launchpad.net/juju-core/state/api/params" 20 "launchpad.net/juju-core/state/api/params"
21 apiserveragent "launchpad.net/juju-core/state/apiserver/agent"
23 coretesting "launchpad.net/juju-core/testing" 22 coretesting "launchpad.net/juju-core/testing"
24 ) 23 )
25 24
26 func TestAll(t *stdtesting.T) { 25 func TestAll(t *stdtesting.T) {
27 coretesting.MgoTestPackage(t) 26 coretesting.MgoTestPackage(t)
28 } 27 }
29 28
30 type servingInfoSuite struct { 29 type servingInfoSuite struct {
31 testing.JujuConnSuite 30 testing.JujuConnSuite
32 } 31 }
33 32
34 var _ = gc.Suite(&servingInfoSuite{}) 33 var _ = gc.Suite(&servingInfoSuite{})
35
36 func fakeMasterHostPort(session *mgo.Session) (string, error) {
wwitzel3 2014/04/01 11:38:18 This is never used and can be remove.
37 return "localhost:27017", nil
38 }
39 34
40 func (s *servingInfoSuite) TestStateServingInfo(c *gc.C) { 35 func (s *servingInfoSuite) TestStateServingInfo(c *gc.C) {
41 st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron) 36 st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
42 37
43 expected := params.StateServingInfo{ 38 expected := params.StateServingInfo{
44 PrivateKey: "some key", 39 PrivateKey: "some key",
45 Cert: "Some cert", 40 Cert: "Some cert",
46 SharedSecret: "really, really secret", 41 SharedSecret: "really, really secret",
47 APIPort: 33, 42 APIPort: 33,
48 StatePort: 44, 43 StatePort: 44,
49 } 44 }
50 s.State.SetStateServingInfo(expected) 45 s.State.SetStateServingInfo(expected)
51 info, err := st.Agent().StateServingInfo() 46 info, err := st.Agent().StateServingInfo()
52 c.Assert(err, gc.IsNil) 47 c.Assert(err, gc.IsNil)
53 c.Assert(info, jc.DeepEquals, expected) 48 c.Assert(info, jc.DeepEquals, expected)
54 } 49 }
55 50
56 func (s *servingInfoSuite) TestStateServingInfoPermission(c *gc.C) { 51 func (s *servingInfoSuite) TestStateServingInfoPermission(c *gc.C) {
57 st, _ := s.OpenAPIAsNewMachine(c) 52 st, _ := s.OpenAPIAsNewMachine(c)
58 53
59 _, err := st.Agent().StateServingInfo() 54 _, err := st.Agent().StateServingInfo()
60 c.Assert(err, gc.ErrorMatches, "permission denied") 55 c.Assert(err, gc.ErrorMatches, "permission denied")
61 } 56 }
62 57
63 func (s *servingInfoSuite) TestIsMaster(c *gc.C) { 58 func (s *servingInfoSuite) TestIsMaster(c *gc.C) {
64 » replicaset.MasterHostPort = func(session *mgo.Session) (string, error) { 59 » calledIsMaster := false
65 » » return "10.0.3.1:27017", nil 60 » var fakeMongoIsMaster = func(session *mgo.Session, m mongo.WithAddresses ) (bool, error) {
61 » » calledIsMaster = true
62 » » return true, nil
66 } 63 }
67 64 » s.PatchValue(&apiserveragent.MongoIsMaster, fakeMongoIsMaster)
68 » mongo.SelectPeerAddress = func(addrs []instance.Address) string {
69 » » return "10.0.3.1"
70 » }
71 65
72 st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron) 66 st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
73 » expected := params.IsMasterResult{Master: true} 67 » expected := true
74 result, err := st.Agent().IsMaster() 68 result, err := st.Agent().IsMaster()
75 69
76 c.Assert(err, gc.IsNil) 70 c.Assert(err, gc.IsNil)
77 » c.Assert(result, jc.DeepEquals, expected) 71 » c.Assert(result, gc.Equals, expected)
78 } 72 » c.Assert(calledIsMaster, gc.Equals, true)
79
80 func (s *servingInfoSuite) TestIsMasterFalse(c *gc.C) {
81 » replicaset.MasterHostPort = func(session *mgo.Session) (string, error) {
82 » » return "10.0.3.1:27017", nil
83 » }
84
85 » mongo.SelectPeerAddress = func(addrs []instance.Address) string {
86 » » return "10.0.3.2"
87 » }
88
89 » st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
90 » expected := params.IsMasterResult{Master: false}
91 » result, err := st.Agent().IsMaster()
92
93 » c.Assert(err, gc.IsNil)
94 » c.Assert(result, jc.DeepEquals, expected)
95 } 73 }
96 74
97 func (s *servingInfoSuite) TestIsMasterPermission(c *gc.C) { 75 func (s *servingInfoSuite) TestIsMasterPermission(c *gc.C) {
98 st, _ := s.OpenAPIAsNewMachine(c) 76 st, _ := s.OpenAPIAsNewMachine(c)
99 _, err := st.Agent().IsMaster() 77 _, err := st.Agent().IsMaster()
100 c.Assert(err, gc.ErrorMatches, "permission denied") 78 c.Assert(err, gc.ErrorMatches, "permission denied")
101 } 79 }
102 80
103 type machineSuite struct { 81 type machineSuite struct {
104 testing.JujuConnSuite 82 testing.JujuConnSuite
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 c.Assert(err, jc.Satisfies, errors.IsUnauthorizedError) 138 c.Assert(err, jc.Satisfies, errors.IsUnauthorizedError)
161 } 139 }
162 140
163 func tryOpenState(info *state.Info) error { 141 func tryOpenState(info *state.Info) error {
164 st, err := state.Open(info, state.DialOpts{}, environs.NewStatePolicy()) 142 st, err := state.Open(info, state.DialOpts{}, environs.NewStatePolicy())
165 if err == nil { 143 if err == nil {
166 st.Close() 144 st.Close()
167 } 145 }
168 return err 146 return err
169 } 147 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b