Use consul/lib's RandomStagger

Removes four redundant copies of the method in the process.
This commit is contained in:
Sean Chittenden
2016-05-03 00:15:29 -07:00
parent a1cb3f14d0
commit 7db2eb03c4
11 changed files with 11 additions and 72 deletions

View File

@@ -16,6 +16,7 @@ import (
"time"
"github.com/armon/go-metrics"
"github.com/hashicorp/consul/lib"
"github.com/hashicorp/go-checkpoint"
"github.com/hashicorp/go-syslog"
"github.com/hashicorp/logutils"
@@ -334,7 +335,7 @@ func (c *Command) setupAgent(config *Config, logOutput io.Writer) error {
// Do an immediate check within the next 30 seconds
go func() {
time.Sleep(randomStagger(30 * time.Second))
time.Sleep(lib.RandomStagger(30 * time.Second))
c.checkpointResults(checkpoint.Check(updateParams))
}()
}

View File

@@ -2,16 +2,9 @@ package agent
import (
"fmt"
"math/rand"
"net"
"time"
)
// Returns a random stagger interval between 0 and the duration
func randomStagger(intv time.Duration) time.Duration {
return time.Duration(uint64(rand.Int63()) % uint64(intv))
}
// IpOfDevice returns a routable ip addr of a device
func ipOfDevice(name string) (net.IP, error) {
intf, err := net.InterfaceByName(name)

View File

@@ -1,16 +0,0 @@
package agent
import (
"testing"
"time"
)
func TestRandomStagger(t *testing.T) {
intv := time.Minute
for i := 0; i < 10; i++ {
stagger := randomStagger(intv)
if stagger < 0 || stagger >= intv {
t.Fatalf("Bad: %v", stagger)
}
}
}