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  }