github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/leadership/util_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package leadership_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/testing"
    10  
    11  	"github.com/juju/juju/core/leadership"
    12  )
    13  
    14  type StubClaimer struct {
    15  	leadership.Claimer
    16  	*testing.Stub
    17  	releases chan struct{}
    18  }
    19  
    20  func (stub *StubClaimer) ClaimLeadership(serviceName, unitName string, duration time.Duration) error {
    21  	stub.MethodCall(stub, "ClaimLeadership", serviceName, unitName, duration)
    22  	return stub.NextErr()
    23  }
    24  
    25  func (stub *StubClaimer) BlockUntilLeadershipReleased(serviceName string, cancel <-chan struct{}) error {
    26  	stub.MethodCall(stub, "BlockUntilLeadershipReleased", serviceName)
    27  	select {
    28  	case <-cancel:
    29  		return leadership.ErrBlockCancelled
    30  	case <-stub.releases:
    31  	}
    32  	return stub.NextErr()
    33  }