github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/worker/peergrouper/initiate_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package peergrouper_test 5 6 import ( 7 gitjujutesting "github.com/juju/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 coretesting "github.com/juju/juju/testing" 12 "github.com/juju/juju/worker/peergrouper" 13 ) 14 15 type InitiateSuite struct { 16 coretesting.BaseSuite 17 } 18 19 var _ = gc.Suite(&InitiateSuite{}) 20 21 // TODO(natefinch) add a test that InitiateMongoServer works when 22 // we support upgrading of existing environments. 23 24 func (s *InitiateSuite) TestInitiateReplicaSet(c *gc.C) { 25 var err error 26 inst := &gitjujutesting.MgoInstance{Params: []string{"--replSet", "juju"}} 27 err = inst.Start(coretesting.Certs) 28 c.Assert(err, jc.ErrorIsNil) 29 defer inst.Destroy() 30 31 info := inst.DialInfo() 32 args := peergrouper.InitiateMongoParams{ 33 DialInfo: info, 34 MemberHostPort: inst.Addr(), 35 } 36 37 err = peergrouper.MaybeInitiateMongoServer(args) 38 c.Assert(err, jc.ErrorIsNil) 39 40 // This would return a mgo.QueryError if a ReplicaSet 41 // configuration already existed but we tried to create 42 // one with replicaset.Initiate again. 43 // ErrReplicaSetAlreadyInitiated is not a failure but an 44 // indication that we tried to initiate an initiated rs 45 err = peergrouper.MaybeInitiateMongoServer(args) 46 c.Assert(err, gc.Equals, peergrouper.ErrReplicaSetAlreadyInitiated) 47 48 // Make sure running InitiateMongoServer without forcing will behave 49 // in the same way as MaybeInitiateMongoServer 50 err = peergrouper.InitiateMongoServer(args, false) 51 c.Assert(err, gc.Equals, peergrouper.ErrReplicaSetAlreadyInitiated) 52 53 // Assert that passing Force to initiate will re-create the replicaset 54 // even though it exists already 55 err = peergrouper.InitiateMongoServer(args, true) 56 c.Assert(err, jc.ErrorIsNil) 57 58 // TODO test login 59 }