Merge lp:~themue/juju-core/go-mstate-relation-test into lp:~juju/juju-core/trunk

Proposed by Frank Mueller
Status: Merged
Approved by: Gustavo Niemeyer
Approved revision: no longer in the source branch.
Merged at revision: 432
Proposed branch: lp:~themue/juju-core/go-mstate-relation-test
Merge into: lp:~juju/juju-core/trunk
Diff against target: 61 lines (+32/-2)
2 files modified
mstate/relation_test.go (+14/-0)
mstate/state.go (+18/-2)
To merge this branch: bzr merge lp:~themue/juju-core/go-mstate-relation-test
Reviewer Review Type Date Requested Status
The Go Language Gophers Pending
Review via email: mp+121436@code.launchpad.net

Description of the change

mstate: continued completion of relation_test.go

Added independend relation tests and analyzed the
dependencies for the missing RelationUnitSuite
(see table in Google Apps).

https://codereview.appspot.com/6472060/

To post a comment you must log in.
Revision history for this message
Gustavo Niemeyer (niemeyer) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'mstate/relation_test.go'
2--- mstate/relation_test.go 2012-08-16 13:29:52 +0000
3+++ mstate/relation_test.go 2012-08-27 15:15:36 +0000
4@@ -129,6 +129,20 @@
5 c.Assert(err, ErrorMatches, `cannot remove relation "peer:baz": not found`)
6 }
7
8+func (s *RelationSuite) TestRemoveServiceRemovesRelations(c *C) {
9+ peer, err := s.State.AddService("peer", s.charm)
10+ c.Assert(err, IsNil)
11+ peerep := state.RelationEndpoint{"peer", "ifce", "baz", state.RolePeer, charm.ScopeGlobal}
12+ _, err = s.State.AddRelation(peerep)
13+ c.Assert(err, IsNil)
14+ err = s.State.RemoveService(peer)
15+ c.Assert(err, IsNil)
16+ _, err = s.State.Service("peer")
17+ c.Assert(err, ErrorMatches, `cannot get service "peer": not found`)
18+ _, err = s.State.Relation(peerep)
19+ c.Assert(err, ErrorMatches, `cannot get relation "peer:baz": not found`)
20+}
21+
22 func (s *RelationSuite) TestLifecycle(c *C) {
23 peer, err := s.State.AddService("peer", s.charm)
24 c.Assert(err, IsNil)
25
26=== modified file 'mstate/state.go'
27--- mstate/state.go 2012-08-24 09:43:46 +0000
28+++ mstate/state.go 2012-08-27 15:15:36 +0000
29@@ -175,14 +175,30 @@
30 // its units and break any of its existing relations.
31 func (s *State) RemoveService(svc *Service) (err error) {
32 defer trivial.ErrorContextf(&err, "cannot remove service %q", svc)
33-
34+ // Remove relations first, to minimize unwanted hook executions.
35+ // TODO(mue) Will change with full lifecycle integration.
36+ rels, err := svc.Relations()
37+ if err != nil {
38+ return err
39+ }
40+ for _, rel := range rels {
41+ err = rel.Die()
42+ if err != nil {
43+ return err
44+ }
45+ err = s.RemoveRelation(rel)
46+ if err != nil {
47+ return err
48+ }
49+ }
50+ // Remove the service.
51 sel := bson.D{{"_id", svc.doc.Name}, {"life", Alive}}
52 change := bson.D{{"$set", bson.D{{"life", Dying}}}}
53 err = s.services.Update(sel, change)
54 if err != nil {
55 return err
56 }
57-
58+ // Remove the units.
59 sel = bson.D{{"service", svc.doc.Name}}
60 change = bson.D{{"$set", bson.D{{"life", Dying}}}}
61 _, err = s.units.UpdateAll(sel, change)

Subscribers

People subscribed via source and target branches